什么时候用到线程?
1.通过并行计算提高程序性能。
2.等待网络、IO响应导致的耗时问题。
线程的状态?
1.初始状态 NEW 线程被构建还没有执行start()方法
2.就绪状态 READY
3.运行状态 RUNABLE
4.等待状态 WAITING 需要等其它线程作一些唤醒的操作如 notify ,
5.阻塞状态 BLOCKED 表示线程阻塞于锁
6.终止状态 TERMINATED
7.超时等待 TIME_WAITING 当使用Thread.sleeep() 的时候会进入到这个状态
在终端可以通过 jps 查看进程ID,再通过 jstack + ID 查看线程状态
线程的启动和终止
1.stop 方法
2.优雅的退出,在判断线程完成了业务逻辑通过判断标志退出。
3.interrupt 方法
线程安全性
线程行、原子性、有序性问题