让我们假设我有两个线程在程序中运行。两个线程都会到达一个节点(例如在树或 map 中),用户必须在其中输入数据才能使线程继续。通常,如果节点是同步的,则无论哪个线程首先到达该节点,都将等待输入,同时阻止任何其他线程到达该节点。
问题是:
有没有办法通过让第二个线程(被锁定的人)通过第一个线程来容纳他?另外,是否可以在不导致线程1退出的情况下做到这一点?
我已经知道您可以对输入数据设置时间限制,以便线程 1 在节点上停留时间过长时被关闭,但是可以这么说,线程 2 是否可以“播放”?
别介意伙计们,我想我已经弄清楚了,我的问题措辞很糟糕,但感谢您的尝试。
最佳答案
如果我的问题正确,答案是java.util.concurrent.locks.Lock.tryLock()
。只需使用它代替 synchronized
关键字即可。
关于java - 聚合线程和线程优先级(java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5285676/