一 点睛
实现Runnable接口来创建并启动线程的步骤如下:
1 定义Runnable接口的实现类,重写该接口的run()方法,该run()方法的方法体是该线程的线程执行体。
2 创建Runnable实现类的实例,并以此实例作为Thread的target来创建Thread对象,该Thread对象才是真正的线程对象。
3 调用线程对象的start()方法来启动该线程。
二 代码
// 通过实现Runnable接口来创建线程类
public class SecondThread implements Runnable
{
private int i ;
// run方法同样是线程执行体
public void run()
{
for ( ; i < 100 ; i++ )
{
// 当线程类实现Runnable接口时,
// 如果想获取当前线程,只能用Thread.currentThread()方法。
System.out.println(Thread.currentThread().getName()
+ " " + i);
}
}
public static void main(String[] args)
{
for (int i = 0; i < 100; i++)
{
System.out.println(Thread.currentThread().getName()
+ " " + i);
if (i == 20)
{
SecondThread st = new SecondThread(); // ①
// 通过new Thread(target , name)方法创建新线程
new Thread(st , "新线程1").start();
new Thread(st , "新线程2").start();
}
}
}
}
三 运行
......
main 17
main 18
main 19
main 20
main 21
main 22
main 23
main 24
main 25
main 26
新线程2 0
main 27
新线程1 0
新线程1 2
main 28
新线程2 1
main 29
新线程1 3
main 30
新线程2 4
main 31
新线程1 5
main 32
......
四 说明
1 创建的Runnable对象只能作为线程对象的target。
2 从运行结果可以看出:两个子线程的i变量是连续的,也就是采用Runnable接口的方式创建的多个线程可以共享线程的target类的实例变量,因为这个target被多个线程共享,
版权声明:本文为chengqiuming原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。