在J2EE开发中很多地方都会用到线程,这样不仅可以提高执行效率,而且还可以提高资源的利用率
线程基础
线程的状态:
- NEW 线程刚创建,尚未启动
- RUNNABLE 线程正在运行中,在这种状态下不会发生wait、sleep的等待状态
- BLOCKED 在多个线程有同步操作的场景
- WAITING 线程拥有了某个锁之后,调用了他的wait方法
- TIMEDWAITING 有时间限制的WAITING _
- TERMINATED 线程已经运行完,基本等于死了
NEW状态:
直接创建一个线程然后获取状态
|
|
执行结果:NEW
RUNNABLE 状态:
线程执行后获取状态
|
|
执行结果:RUNNABLE
BLOCKED状态:
多个线程相互等待synchronized
时,线程会出现BLOCKED状态;
|
|
这个时候一个线程RUNNABLE,另一个就是BLOCKED
WAITING 状态:
这个需要用到生产者消费者模型, 当生产者生产过慢的时候, 消费者就会等待生产者的下一次notify;
|
|
TIMED_WAITING状态:
在上个例子的基础上wait
加上时间参数就OK了;
|
|
t1现在为TIMED_WAITING (on object monitor)
这里括号里还可能是sleeping
等其它情况。
TERMINATED状态 :
线程运行结束就是TERMINATED
状态
|
|
执行结果:
RUNNABLE
TERMINATED