gpt4 book ai didi

java - 我应该使用lock.lock() : in this method?

转载 作者:行者123 更新时间:2023-12-02 07:45:20 25 4
gpt4 key购买 nike

我编写了这个方法,其目的是通知线程正在离开

特定代码块

线程代表一辆汽车离开一座桥,以便其他汽车可以通过它。

这座桥可供给定数量的汽车通行(容量有限),并且只有单向 channel 。

public void getout(int diection){
// release the lock
semaphore.release();

try{
lock.lock(); //access to shared data
if(direction == Car.NORTH)
nNordTraversing--; //decreasing traversing threads
else
nSudTraversing--;

bridgeCond.signal();

}finally{
lock.unlock();
}

}

我的问题是:我应该使用lock.lock();或者这只是废话?

提前致谢

最佳答案

由于我们没有完整的代码(信号量是什么?),这个答案部分基于猜测。

如果您的问题与递增和递减操作有关,那么您应该知道这些操作实际上不是原子的。

所以,是的,如果您有其他线程访问这些变量,您需要保护它们以确保没有其他线程可以读取它们,或者更糟糕的是尝试执行相同的操作,因为两个并行增量可能只会导致一个有效。

但是由于锁定是有成本的,您也可以将变量封装在 AtomicLong 中.

关于java - 我应该使用lock.lock() : in this method?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10962667/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com