实现Runnable接口创建线程类

  • Post author:
  • Post category:其他



一 点睛

实现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 版权协议,转载请附上原文出处链接和本声明。