gpt4 book ai didi

java - 将事件驱动代码转换为阻塞代码

转载 作者:行者123 更新时间:2023-12-02 06:13:02 24 4
gpt4 key购买 nike

我有一个调用接口(interface)的类,如下所示:

interface MessageReceiver{
public void messageReceived(Message m);
}

但是,因为我从多个源接收消息,需要同步,所以我希望使用阻止接收消息的代码。即我想实现以下(阻塞)接口(interface),因此我的调用进程可以阻塞传入的新消息:

public Message getNextMessage();

但是,到目前为止,我的尝试最终因线程同步和锁定问题而陷入困境......实际上这可以在同一个线程上完成(不需要并发),但我是不知道如何实现,无需深入研究汇编程序...为此,java 可能不是最简单的语言...

提前致谢!

最佳答案

创建内部带有阻塞队列的中间对象。将其注册为 MessageReceiver。

class Channel implements MessageReceiver {
BlockingQueue q=new ArrayBlockingQueue();

public void messageReceived(Message m) {
q.put(m);
}

public Message getNextMessage() {
return q.take();
}
}

关于java - 将事件驱动代码转换为阻塞代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21719649/

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