比方说,我有一个代码片段这样Java中有一种快速同步的同步方式吗?
synchronized(obj) {
do something;
}
如果obj
已经由其他线程锁定,该代码会等到obj
发布之后,它会试图获得锁。
但我想知道是否有任何方法可以跳过代码块,如果不能立即获得锁定?
换句话说,有没有办法来检测对象是否已经被锁定?
UPDATE:
感谢提Lock
接口,但要求节目服从相同的合同,即,它们都指Lock
对象,而不是关键字。
我不知道是否有内置的方式来检查锁定状态?
谢谢。
如果你想获得你必须遵循相同的合同一切与该对象的工作反正锁做到这一点。 .. – trutheality 2012-04-21 03:41:44
@trutheality好点,谢谢。 – 2012-04-21 08:14:37
如果您可以绑定到Sun JVM,那么还有'sun.misc.Unsafe#tryMonitorEnter(Object)',如下所述:http://www.javaspecialists.eu/archive/Issue194.html – 2012-04-21 10:48:18