一 点睛
实现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被多个线程共享,