Thread

2018/03/28

一 概念

  1. 什么是线程以及多线程与进程的区别
  2. 多线程的创建与启动
  3. 中断线程和守护线程以及线程优先级
  4. 线程的状态转化关系

1 进程 线程 多线程

  1. 进程: 正在运行的程序,是系统进行资源分配和调度的独立单位.每个进程都有自己内存空间和系统资源.
  2. 线程: 是进程中实际运行单位,一条线程是进程中的单一顺序的控制流.
  3. 多线程: 一个进程并发多个线程,每条线程执行不同任务.这些线程拥有各自的计数器,堆栈以及局部变量,并且能够访问共享内存.

2 线程创建与启动

  1. 创建,虽然有3种方式,但本质上都是调用Runnable.
    • extend Thread之后 override run()
    • implement Runnable之后 override run()
    • new Thread(new FutureTask<Object>(new Callable<Object>())) 然后override call(). Callable相当于Runnable的加强版,因为其定义的call()接口既有返回值,也可以抛出异常.同时可以拿到Future对象,Future表示异步计算的结果.通过Future对象可以了解任务执行情况,可取消任务的执行.
  2. 启动 new Thread().start()
  3. run start区别
    • start启动新线程,内部调用run()

3 中断线程和守护线程以及线程优先级

4 线程状态

  1. 新建
  2. 就绪
  3. 运行
  4. 阻塞

二 Handle

三 多线程

1 线程间协作

  1. wait
  2. notify
  3. sleep
  4. yield
  5. join

2 线程池

3 关于锁

  1. 活锁
  2. 死锁
  3. 避免死锁
  4. 检测一个线程是否拥有锁
  5. 单例模式的双检锁
  6. 锁优化

4 线程堆栈

  1. 如何获取堆栈
  2. 控制堆栈参数

5 忙循环

6 同步

  1. synchronized
  2. volatile
  3. ReebtrabtLock
  4. AtomicInteger提供的atomic
  5. lock

参考文献 Java并发编程

文内导航