synchronized原理
2018-06-21 15:12:22 41 举报
synchronized原理
作者其他创作
大纲/内容
监视器Monitor
上面的class信息中,对于同步块的实现使用了monitorenter 和 monitorexit指令,而同步方法则是依靠方法上使用ACC_SYNCHRONIZED来完成的。无论哪种方式,其本质是对一个对象的监视器(monitor)进行获取,而这个获取过程是排他的,也就是同一时刻只能有一个线程取到synchronized多保护 对象的监视器。任何一个对象都有自己的监视器,当这个对象由同步块后者这个对象的同步方法调用时,执行方法的线程必须取到该对象的监视器 才能进入同步块或者同步方法,而没有获取到的监视器的线程将会阻塞在同步块和同步方法 的入口处,进入BLOCKED状态。
Monitor.Enter
Monitor.Enter失败
同步队列SynchronizedQueue
Monitor.Exit后通知,出队列
对象、监视器、同步队列和执行线程之间的关系
对象Object
Monitor.Enter退出
Monitor.Enter成功
0 条评论
下一页