线程
来自百度百科
线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。
状态以及转换
RUNNING
这个状态在Thread的源码中是没有的,我这里是为了形容一下获取到了cpu的线程
每种状态的的含义
1. NEW
尚未启动的线程处于这种状态
例如:new MyThread();
2.RUNNABLE
可运行线程的线程状态
例如:thread.start();
3.BLOCKED
等待锁而被阻塞的线程处于这种状态
锁已被别人抢占了
4.WAITING
等待状态
例如:Object.wait()?不仅会让出cpu还会让出锁) Thread.join(); LockSupport.park();
5.TIMED_WAITING
指定等待时间的等待状态
例如:Thread.sleep(只会让出cpu),Object.wait (不仅会让出cpu还会让出锁) with timeout,Thread.join with timeout, LockSupport.parkNanos,LockSupport.parkUntil
6.TERMINATED
终止状态/已完成状态
线程中断或正常执行完毕
总结
线程状态以及状态的转换,这部分知识还是蛮重要的,希望大家能好好掌握,如果想看Thread的源码解析可以点击这里