线程状态
- New 新创建
- Runnable运行中
- Blocked被阻塞
- Waiting等待
- Timed Waiting计时等待
- Terminated已终止
Thread.join
可以等待当前线程结束后,再运行主线程
中断线程
如果线程需要执行一个长时间任务,就可能终端线程
中断线程就是其他线程个该线程发一个信号,该线程收到信号后结束执行run方法
终端线程通过
volatile
volatile 关键字的目的时告诉虚拟机:
- 每次访问变量时,总是获得主内存的最新值
- 每次修改变量后,立刻回写道主内存
volatile可见性
总结
- 调用interrupt()方法可以中断一个线程
- 通过检测isInterrupted()标志获取当前线程是否已中断
- 如果线程处于等待状态,该线程会捕获InterruptedException
- isInterrupted()为true或者捕获了InterruptedException都应该立刻结束
- 通过标志位判断需要正确使用volatile关键字
- volatile关键字解决了共享变量在线程间的可见性问题