版权声明:本文首发 http://asing1elife.com ,转载请注明出处。 https://blog.csdn.net/asing1elife/article/details/82915000
与 Java 继承 Thread 类 一样,实现 Runnable 接口也是启动 Java 线程的一种方式
通过继承 Thread 类实现多线程的对象,不适合资源共享,而实现 Runnable 接口,则适合资源共享
不论是通过继承 Thread 类或者实现 Runnable 接口来实现多线程,最终都是通过 Thread 的 API 控制线程
更多精彩
- 更多技术博客,请移步 asing1elife’s blog
注意
- run() 是多线程程序的一个约定,所有的多线程代码都在其中执行
- 在启动多线程时,首先需要通过 Thread(Runnable target) 构造出线程对象,再调用 start() 运行多线程
- 所有的多线程代码都是通过 Thread 的 start() 来运行
优势 - Runnable 相较于 Thread
- 适合拥有多个相同程序代码的线程去处理同一资源
- 可以避免 Java 中的单继承限制
- 代码可以被多个线程共享
- 代码和数据实现独立
- 增加程序的健壮性
- 线程池只能放入实现 Runnable 或 Callable 的类,不能直接放入继承 Thread 的类
实现
public class RunnableTest implements Runnable {
private String name;
public RunnableTest(String name) {
this.name = name;
}
public void run() {
for (int i = 1; i <= 5; i++) {
System.out.println(name + " 运行 " + i + " 次");
try {
Thread.sleep(1000);
} catch (InerruptedException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
RunnableTest tom = new RunnableTest("tom");
RunnableTest jerry = new RunnableTest("jerry");
new Thread(tom).start();
new Thread(jerry).start();
}
}