线程的状态
初始状态(NEW):线程类,new一个实例出来,线程就进入了初始状态
运行(RUNNABLE):
就绪(ready) 可以运行,但没有被调度
运行(running)
阻塞:线程阻塞在进入synchronized关键字修饰的方法或代码块(获取锁)时的状态,注意只有synchronized会进入阻塞状态,其它的包括Lock都会进入等待状态
等待:通过wait方法进入,不会被分配CPU执行时间,要等待被显式地唤醒
超时等待:不会被分配CPU执行时间,不过无须无限期等待被其他线程显示地唤醒,在达到一定时间后它们会自动唤醒
终止状态:
中断:
线程内部有一个标志位(native变量),标识线程是否中断
运行时:在任务中自行判断标记位并处理
调用可中断的方法进入等待状态时:线程中断会抛出中断异常,续自行捕获异常并处理(也可以什么都不做)
其它方法:
join 等待调用的线程运行结束
yield 运行的线程放弃cpu时间片,让给其它线程执行,进入可执行状态
参考资料: