目录 start

  1. 线程的基础学习
    1. 基础
    2. 线程的意义
    3. 线程的生命周期
      1. 创建
      2. 控制
      3. 销毁
    4. 线程的优先级

目录 end|2019-10-19 17:04|


线程的基础学习

个人相关代码

  • 线程的多种创建方式
  • 线程池的创建方式
  • 线程的状态转化

基础

线程的意义

线程的生命周期

参考博客 | Blog: 线程详解 | 参考Java-learning仓库

创建

  • 创建线程有三种创建方式: 继承,实现接口,实例化匿名内部方法。-> 示例代码

查看Thread类源码 看看Thread类源码,捋清Runnable,target,run,start关系

  • Runnable是一个接口
  • target是Thread类中类型为Runnable,名为target的属性
  • run是Thread类实现了Runnable的接口,重写的方法。
  • start是启动线程的方法
  • 在Thread类中,调用关系为:start->start0->run->target.run

Thread类的run方法源码

1
2
3
4
5
public void run() {
if (target != null) {
target.run();
}
}

Thread类的target属性

1
2
/* 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来设置线程优先级策略是错误和非平台可移植性的.