线程生命周期的5种状态
新建(new)、就绪(runnalbe)、运行(running)、阻塞(blocked)、死亡(dead)。
新建:使用new创建一个线程对象,此时线程为新建状态。
就绪:调用线程对象的start()方法线程为就绪状态。
运行:处于就绪状态的线程获得cup,开始执行,为运行状态。
阻塞:人为暂停线程执行或线程为等待获取其它资源,让出cpu,为阻塞状态。
死亡:线程执行完毕,此时为死亡状态。
线程进入阻塞状态的事件
1、线程调用sleep方法放弃cpu资源
2、线程等待IO(如请求网络、读写文件等)
3、线程等待获取一个同步监视器
4、线程等待某个通知(notify)
5、调用线程对象的suspend方法将线程挂起
线程控制
这里可以将线程简单理解为并行执行的多个方法
1、当前线程等待另一线程完成(join)
2、线程睡眠(sleep)让线程暂停一段时间,睡眠的线程处于阻塞状态。
3、线程让步(yield)让线程暂停一下,不会让出cpu,线程状态转为就绪状态,等待线程重新调度,如果没有高优先级的线程,该线程可以继续执行。
4、改变线程优先级
5、设为后台(守护)线程
线程同步(线程同步(官方文档翻译))
在多线程环境下,只允许一个线程对竞态资源操作。
实现方法:
1、通过同步代码块或同步方法设置同步监视器。
2、通过同步锁加锁。