目录 start

目录 end |2018-05-26| 码云 | CSDN | OSChina


线程的基础学习

个人相关代码

TODO

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

基础

线程的意义

线程的生命周期

参考博客 | 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类的构造方法里被调用

控制

  • 当调用 Thread.join() 时,_调用线程_将阻塞,直到_目标线程_完成为止。

销毁


线程的优先级

多个线程同时运行时,由线程调度器来决定哪些线程运行,哪些等待以及线程切换的时间点. 由于各个操作系统的线程调度器的实现各不相同, 所以依赖JDK来设置线程优先级策略是错误和非平台可移植性的.


线程池

线程池 BlockingQueue synchronized volatile


书籍推荐