Java线程状态
2018-05-25 18:02:16 0 举报
Java线程状态
作者其他创作
大纲/内容
NEW
sleep()时间结束
terminated
Object.wait()Thread.join()LockSupport.park()
1、当前线程中调用wait、join、park函数时,当前线程就会进入等待态2、有一个等待队列存放所有等待态的线程3、线程处于等待态表示它需要等待其他线程的唤醒才能继续运行4、进入该状态后释放CPU执行权 和 占有的资源
Thread.sleep(sleeptime)Object.wait(timeout)Thread.join(timeout)LockSupport.parkNanos()LockSupport.parkUntil()
1、请求同步锁失败时进入的状态2、由一个阻塞队列存放所有阻塞态的线程3、处于阻塞态的线程会不断请求锁资源,一旦请求成功,就会进入就绪队列,等待执行
OS选中
BLOCKED
1、sleep()方法仅释放CPU使用权,锁仍然占用2、wait()方法会释放CPU执行权 和 占有的锁3、wait和notify必须配套使用,即必须使用同一把锁调用4、wait和notify必须放在一个同步块中5、调用wait和notify的对象必须是他们所处同步块的锁对象
synchronized(object)
Running
start
1、获得CPU执行权,正在执行的线程2、由于一个CPU同一时刻只能执行一条线程,因此每个CPU每个时刻只有一条运行态的线程
Ready
Object.notify()Object.notifyAll()
TIMED_WAITING
acquires lock
RUNNABLE
1、Thread.yield()2、CPU时间片用完
1、该状态下的线程已经获得执行所需的所有资 源,只要CPU分配执行权就能运行2、所有就绪态的线程存放在就绪队列中
TERMINATED
WAITING
0 条评论
回复 删除
下一页