不良使用trylock
T1 T2
x = 42; while (lock.trylock())
lock.lock(); lock.unlock();
assert(x == 42);
在Java和C++内存模型中,都允许x = 42在lock(1)之后移动。
因此assert可能在T2线程中失败。因此在C++内存模型中
他们定义了trylock失效的行为可能是 spurious 。
但是我没有找到Java内存模型中trylock的规范。
可以确保在线程2中断言可以传入Java 。引用会有所帮助!
推荐人: http://rsim.cs.illinois.edu/Pubs/08PLDI.pdf
最佳答案
从javadoc中获取Lock:
关于java - JMM和不希望使用的trylock,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27790268/