java – Lock是否保证发生之前的关系?
我有一个
Java代码重新排序和竞争条件的问题.
假设我有以下代码,同时执行2个或更多的线程workForThread(): public class Job { private Lock lock = new ReentrantLock(); private int sharedObject = 1; public void workForThread() { lock.lock(); try { sharedObject++; } finally { lock.unlock(); } } } JVM是否可能以错误的顺序执行?例如,以下是否可以重新排序? sharedObject++; lock.lock(); lock.unlock(); 还是保证锁不会重新排序? 解决方法
我们来看看Java文档关于Lock界面的内容:
所以你的问题的答案是肯定的.锁定给你同样的重新排序保证,一个常规的同步块/方法会. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 核心Java中的继承
- Android实现长时间不用APP屏幕变暗
- java – 为什么FilterInputStream和FilterOutputStream在它
- 浅谈synchronized方法对非synchronized方法的影响
- java – JSP比较运算符行为
- 解决org.hibernate.HibernateException: identifier of an
- java实现图片上加文字水印(SpringMVC + Jsp)
- java – 我应该为2D滚动地图使用什么缓冲策略?
- jpa – 如何使一个CriteriaBuilder与自定义的“on”条件一起
- 日期TimeZone在java中的转换?