我想知道这段代码是否是线程安全的:
public class SafeSequenceWithLock implements Sequence {
private int value = 0;
Lock lock = new ReentrantLock();
@Override
public int getAndIncrement() {
lock.lock();
try{
value++;
return value;
}finally{
System.out.println("XXX");
lock.unlock();
}
}
}
锁定的锁定会在返回值后持续存在,还是与使用...
相同lock.lock();
value++;
lock.unlock();
// another thread could change "value" here!
return value;
...
答案 0 :(得分:0)
对于您的具体示例,它将与您提到的相同:锁定将被解锁,然后将返回该值:在方法返回之前调用finally块。