tem*_*def 15 java jvm synchronized
我一直在阅读Java虚拟机指令集,并注意到当使用指令调用标记为同步的方法(例如invokestatic,invokevirtual等)时,由特定的字节码指令来获取接收器上的监视器宾语.类似地,从方法返回时,由方法同步时指令释放监视器的指令.这看起来很奇怪,因为有明确的monitorenter和monitorexit字节码来管理监视器.JVM是否有特殊原因以这种方式设计这些指令,而不是仅仅编译方法以包含适当的monitorenter和monitorexit指令?
早在 90 年代中期,还没有 Java JIT 编译器,微同步被认为是一个非常好的主意。
所以你经常调用这些同步方法。甚至Vector还有它们!您无需解释额外的字节码即可处理。
但不仅仅是在代码运行时。类文件更大。额外的说明,还要设置try/finally表并验证是否有一些顽皮的东西没有被溜进去。
只是我的猜测。
| 归档时间: |
|
| 查看次数: |
1485 次 |
| 最近记录: |