// public Thread(Runnable target) 中的target参数
public class TestDemo implements Runnable{
@Override
public void run() {
System.out.println("线程执行");
}
}
class Test{
public static void main(String[] args) {
TestDemo testDemo=new TestDemo();
Thread thread=new Thread(testDemo);
thread.start();
}
// JVM直接调用的是Thread类中的Run()方法,该方法源码如下:
// public void run(){
// if(target!=null){ //判断 target变量是否为空,不为空则执行run方法
// target.run();
// }
// }
// target存储的对象就是声明的MyRunnable run对象,
// 对Thread 构造方法传入Runnable对象, 再结合if判断就可以执行Runnable对象的Run()方法
// 变量target是在init()方法中进行赋值初始化的,核心代码如下 这是thread的底层代码
// public Thread(Runnable target) {
// init(null, target, "Thread-" + nextThreadNum(), 0); //构造方法调用
// }
// private void init(ThreadGroup g, Runnable target, String name,
// long stackSize) {
// init(g, target, name, stackSize, null); //在调用
// }
// private void init(ThreadGroup g, Runnable target, String name,
// long stackSize, AccessControlContext acc) {
// .....
// this.target = target; //初始化
// .....
// }
// 执行start()方法时,由JVM调用Thread.java类的Run()方法 然后Thread 的run方法在调用runnable的run方法
// @Override
// public void run() {
// if (target != null) {
// target.run();
// }
// }
//后面还有一点 有反编译的实现 详情在书的17 -18 页(java多线程编程技术)
//
//子类重写Thread。run()方法,如果不调用super.run()
//则不会执行Thread.java类的run()方法,而是直接执行实现类的run()方法
// --其实没什么 这本书讲的啰嗦但详细 需要耐心去读,不要嫌弃基础 慢慢来 对自己的忠告,所以我才写出来慢慢记录和回顾学习 很照顾基础初学者这本书
}
java多线程编程16-18(Thread(Runnable target) 中的target参数)
最新推荐文章于 2022-08-09 22:03:00 发布