我怀疑是如何同步使用相同方法的不同类的线程 . 我有两个不同的类, ClientA
和 ClientB
(显然扩展了Thread)和一个Server类的方法 . ClassA
和 ClassB
的线程都必须使用此方法,但是有关于访问的不同策略:
-
如果
ClassA
的线程正在使用方法内的资源,则同一类的其他线程可以使用它; -
如果
ClassB
的线程正在使用该方法,则nobody(ClassA
和ClassB
的线程)都可以使用它(互斥) .
所以这是我的问题:如何应用这种同步策略?我在方法的开头使用了一个信号量(互斥量),但我不确定这个解决方案,因为我认为每次都会阻塞每种类型的线程 .
2 回答
我认为你可以使用java.util.concurrent.locks.ReentrantLock来实现这一点 .
示例略有不同 . ClientA让所有人都进入,ClientB不会:
执行:
结果:
也许有点复杂,但我仍然认为如何使用同步块来演示如何考虑它会很有趣: