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接口创建线程类