16.2.2 实现Runnable接口创建线程类
实现Runnable
接口来创建并启动多线程的步骤如下。
①定义Runnable
接口的实现类,并重写该接口的run()
方法,该run()
方法的方法体同样是该线程的线程执行体。
②创建Runnable
实现类的实例,并以此实例作为Thread
的target
来创建Thread
对象,该Thread
对象才是真正的线程对象。也可以在创建Thread
对象时为该Thread
对象指定一个名字
③调用线程对象的start()
方法来启动该线程。
下面程序示范了通过实现Runnable
接口来创建并启动多线程。
1 | // 通过实现Runnable接口来创建线程类 |
上面程序中实现了run()
方法,也就是定义了该线程的线程执行体。
如何获取当前线程对象
- 通过继承
Thread
类来获得当前线程对象
比较简单,直接使用this
关键字就可以了; - 但通过实现
Runnable
接口来获得当前线程对象,则必须使用Thread.currentThread()
方法。
Runnable接口是函数式接口
Runnable
接口中只包含一个抽象方法,从Java 8
开始, Runnable
接口使用了@FunctionalInterface
修饰。也就是说, Runnable
接口是函数式接口,可使用Lambda
表达式创建Runnable
对象。接下来介绍的Callable
接口也是函数式接口。
多个线程共享一个target则可以共享target中的实例变量
采用Runnable
接口的方式创建的多个线程可以共享线程类的实例变量
。这是因为只创建了一个target
实例,而多个线程可以共享这个target
实例,因而多个线程中的实例变量也是共享的。
原文链接: 16.2.2 实现Runnable接口创建线程类