我有一个包含许多线程的程序,让我们以六个线程为例。其中五个应该能够同时使用给定资源,但如果发生给定条件,最后一个线程不应该,并且应该等到该条件结束。
据我了解,不能使用 ReentrantLock,因为它一次只能由一个线程持有。另一方面,信号量可以一次由多个线程持有,但我找不到将条件附加到获取方法的方法。
这个高级对象可以做到这一点,或者我将不得不使用通知来实现这个功能并直接等待?
例如。
class A{
getResource{ ... }
}
//This Runable could be spawn many times at the same time
class B implements Runnable{
run {
setConditionToTrue
getResource
...
getResource
...
getResource
setConditionToFalse
}
}
//This will be working forever but only one Thread
class C implements Runnable{
run{
loop{
if(Condition == true) wait
getResource
}
}
}
提前谢谢朋友们