java.lang.Runnable接口
2023-09-11 14:21:02 时间
大家都知道使用线程的2种方式,一是继承Thread类,二是实现Runnable接口。
实际上,即使你实现了Runnable接口,终于还是要构造一个Thread类的对象。
看过Thread源码发现,事实上这个Thread类也实现了Runnable接口,而这个Thread类的run()方法实现是
if (target != null) {
target.run();
}
而这个target则是Thread类的构造器都要调用的init()方法所指定的Runnable接口实现类。
Thread类的几个构造器Thread()、Thread(Runnable target)、Thread(ThreadGroup group, Runnable target)、Thread(String name)、Thread(ThreadGroup group, String name)、Thread(Runnable target, String name)、Thread(ThreadGroup group, Runnable target, String name)、Thread(ThreadGroup group, Runnable target, String name, long stackSize)都调用了private void init(ThreadGroup g, Runnable target, String name, long stackSize)。
所以假设你实现了Runnable接口并用这个接口实现类构造了一个Thread对象,那么run()方法运行的将是这个target Runnable接口实现类的run()方法,否则,假设直接继承自Thread类,那么这个target为null,所以你仅仅能覆盖掉Thread类的run()方法。
实际上,即使你实现了Runnable接口,终于还是要构造一个Thread类的对象。
看过Thread源码发现,事实上这个Thread类也实现了Runnable接口,而这个Thread类的run()方法实现是
if (target != null) {
target.run();
}
而这个target则是Thread类的构造器都要调用的init()方法所指定的Runnable接口实现类。
Thread类的几个构造器Thread()、Thread(Runnable target)、Thread(ThreadGroup group, Runnable target)、Thread(String name)、Thread(ThreadGroup group, String name)、Thread(Runnable target, String name)、Thread(ThreadGroup group, Runnable target, String name)、Thread(ThreadGroup group, Runnable target, String name, long stackSize)都调用了private void init(ThreadGroup g, Runnable target, String name, long stackSize)。
所以假设你实现了Runnable接口并用这个接口实现类构造了一个Thread对象,那么run()方法运行的将是这个target Runnable接口实现类的run()方法,否则,假设直接继承自Thread类,那么这个target为null,所以你仅仅能覆盖掉Thread类的run()方法。
相关文章
- java基础知识回顾之javaIO类--File类应用:过滤器接口FilenameFilter和FileFilter
- Java泛型--泛型应用--泛型接口、泛型方法、泛型数组、泛型嵌套
- Java面向对象高级--抽象类与接口的应用
- java中异常注意的细节2
- Java实现 LeetCode 719 找出第 k 小的距离对(二分搜索法+二分猜数字)
- Java实现 蓝桥杯VIP 算法提高 彩票
- j2ee项目Java代码性能优化要点(抄书)
- java--uploadify3.1多文件上传
- 【JAVA】java编译错误:编码UTF8/GBK的不可映射字符
- [Java Spring] Error Handling with @ExceptionHandler
- Java接口中的字段
- java.lang.OutOfMemoryError: Java heap space 解决方法
- Java面向接口编程
- Java SpringBoot 应用使用命令行 mvn spring-boot run 启动的原理
- Atitit.面向接口的web 原理与设计重写 路由启动绑定配置url router rewriting urlpage mvc mvp的 java c#.net php js
- java.io.IOException: Cleartext HTTP traffic to 192.168.xx.xxx not permitted
- 6-4 字符串加密(Java解法,两种网上的类型题)
- 【LeetCode-面试算法经典-Java实现】【008-String to Integer (atoi) (字符串转成整数)】
- Java的递归算法
- java.lang.OutOfMemoryError: Java heap space
- java.lang下面有一个接口:Comparable(可比较的)
- 【Java 基础】for 循环、嵌套循环详解(附案例)
- 【面试1】Java序列化和反序列化为什么要实现Serializable接口
- 【java】Java 接口(Interface)
- 【java】Java并发编程系列-基础知识(非常详细哦)