gpt4 book ai didi

java - 在 Java 中释放信号量对象的正确方法是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:03:48 29 4
gpt4 key购买 nike

<分区>

这是网上大部分资源写的代码。但这是不正确的,因为考虑一个线程阻塞然后被中断的场景。即使线程没有获得锁,它仍然会释放锁。这是不正确的。那么在java中释放一个信号量的正确实现是怎样的呢?

Semaphore lock = new Semaphore(1);

add(){
try {
lock.acquire();

// critical section

} catch (InterruptedException e) {

Thread.currentThread().interrupt();

}finally{
lock.release()
}
}

我认为这是正确的解决方案:-。是吗?

try {
lock.acquire();

try {
// do some stuff here
} finally {

lock.release();

}
} catch(InterruptedException ie) {

Thread.currentThread().interrupt();
throw new RuntimeException(ie);

}

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