gpt4 book ai didi

java - Java 中的 WaitForMultipleObjects

转载 作者:搜寻专家 更新时间:2023-11-01 02:56:20 25 4
gpt4 key购买 nike

在 Java (v6) 中实现 WaitForMultipleObjects 的 Win32 等价物的最优雅方法是什么。线程一直处于 hibernate 状态,直到发生多个事件之一。发生这种情况时,我想处理它并重新休眠。不需要数据,只需一个事件。

最佳答案

这实际上取决于您想用它做什么,但是您可以做一些像使用 wait/notify 方法一样简单的事情,或者您可以使用 java.util.concurrency 包中的结构。后者将是我个人的选择。您可以轻松地设置一个 BlockingQueue,您可以让生产者将事件对象放入其中,并让消费者阻止删除事件。

// somewhere out there
public enum Events {
TERMINATE, DO_SOMETHING, BAKE_SOMETHING
}

// inside consumer
Events e;
while( (e = queue.take()) != TERMINATE ) {
switch(e) {
case DO_SOMETHING:
// blah blah
}
}

// somewhere else in another thread
Events e = BAKE_SOMETHING;
if( queue.offer(e) )
// the queue gladly accepted our BAKE_SOMETHING event!
else
// oops! we could block with put() if we want...

关于java - Java 中的 WaitForMultipleObjects,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/788835/

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