线程状态
1.NEW 至今尚未启动的线程处于这种状态。
2 RUNNABLE 正在java虚拟机中执行的线程处于这种状态。
3 BLOCKED 受阻塞并等待某个监视器锁的线程处于这种状态。
4 WAITING 无限期地等待另一个线程来执行某一特定操作的线程处于这种状态。
5 TIMED_WAITING 等待另一线程来执行取决于指定等待时间的操作的线程处于这种状态。
6 TERMINATED 已退出的线程处于这种状态。
阻塞状态:具有cpu的执行资格,等待cpu空闲时执行。
休眠状态:放弃cpu的执行资格,即使cpu空闲,也不执行。
TIMED_WAITING 案例:
BLOCKED 案例:
WAITING案例:
打印结果:
线程池:
线程池就是线程的集合(ArrayList,HashSet,LinkedList,HashMap);
优先选用LinkedList,或者ArrayList
当程序第一次启动的时候创建多个线程,保存到集合中,当需要使用线程的时候,就可以从集合中取出来使用。Thread t = list.remove(0)(或者 Thread t = linkedList.removeFist());返回的是被移除的元素(即线程),线程只能被一个任务使用。当线程使用完毕,需要报线程归还给线程池,list.add(t)( 或者 linkedList.addLast(t)).
线程池实例:
打印结果: