线程的状态
2018-03-20 17:10:52 6 举报
java线程状态
作者其他创作
大纲/内容
运行
synchronized
对象
os调度
get lock
阻塞
t1.join:让t1线程所在的主线程阻塞,直到t1运行完毕
run()执行完毕/异常
notify/niotifyall
t.sleep()t1.join()等待用户指令
Monitor
死亡
线程状态
创建
lock.wait()
t.start()
可运行
获取监视器锁
Threads...
锁池(同步队列)
等待队列
wait()/notify前为什么要获取锁?wait调用前必须获取监视器锁,然后交给唤醒的线程,notify不会立即唤醒线程,而是等待主线程monitorexit执行完毕
Monitor.Exit
Thread.yeild()/时间片用完
Monitor.Enter
synchronized Method--实例对象锁;synchronized(static lock)--全局锁,类锁,锁定Class;synchronized(this/static lock){代码块}--实例对象锁/全局锁(取决于参数)通过javap -v Demo.class运行代码,可以看到flags中的ACC_SYNCHRONIZED(方法修饰时可见)而monitorenter/monitorexit表示监视器的进入与退出(对象的监视器)
ThreadRunnableCallable/Future(callback场景)ThreadPoll(Executor)(减少创建销毁,方便管理)
sleep()时间点到达t1.run()执行完毕
同步队列wait set
Monitor.Enter成功
0 条评论
下一页