JavaThread - Kuangcp/Note GitHub Wiki
目录 start
目录 end|2020-04-27 23:42|
- 线程的多种创建方式
- 线程池的创建方式
- 线程的状态转化
- 创建线程有三种创建方式: 继承,实现接口,实例化匿名内部方法。-> 示例代码
查看Thread类源码 看看Thread类源码,捋清Runnable,target,run,start关系
- Runnable是一个接口
- target是Thread类中类型为Runnable,名为target的属性
- run是Thread类实现了Runnable的接口,重写的方法。
- start是启动线程的方法
- 在Thread类中,调用关系为:start->start0->run->target.run
Thread类的run方法源码
public void run() {
if (target != null) {
target.run();
}
}
Thread类的target属性
/* What will be run. */
private Runnable target;
- target属性由
private void init(ThreadGroup g, Runnable target, String name,long stackSize, AccessControlContext acc)
方法初始化。- init方法在Thread类的构造方法里被调用
- 当调用
join()
时,当前调用线程
将会阻塞,直到目标线程
完成为止。
多个线程同时运行时,由线程调度器来决定哪些线程运行,哪些等待以及线程切换的时间点. 由于各个操作系统的线程调度器的实现各不相同, 所以依赖JDK来设置线程优先级策略是错误和平台不可移植性的.