Skip to content

JavaThread

kcp edited this page Oct 13, 2020 · 2 revisions

title: Java线程 date: 2018-11-21 10:56:52 tags: - Thread categories: - Java

目录 start

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

目录 end|2020-04-27 23:42|


线程的基础学习

个人相关代码

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

基础

线程的意义

线程的生命周期

参考博客 | 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方法源码

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


协程

Loom

OpenJDK: Loom

OpenJDK Project Loom

Quasar

Github: Quasar

Summary

Clone this wiki locally