【发布时间】:2021-03-27 04:12:33
【问题描述】:
我是 Java 新手,一直被线程消息传递的问题困扰。 我的意思是-我有 4 个线程,一个线程从网络读取 msg,并根据 msg 的类型将 msg 传递给解析器线程或数据库线程。数据库线程执行一些操作,并且必须将 msg 发送回第一个将其放入套接字的网络线程。同样,解析器线程也执行一些操作,并根据结果将 msg 发送回网络线程或数据库线程。 我尝试过的事情-
- 我已经阅读了关于 notify() wait() 用于线程通信的信息,这对我的情况没有帮助,因为我需要一对一的消息传递而不是全部广播
- 我已经阅读了有关并发队列阻塞队列的信息 - 因为这不是一个理想的生产者消费者问题,其中一个线程正在生成消息,而其他线程从中读取 - 我不能使用它。 使用它就像我需要为每个通信通道设置 5 个队列
network->db,
db->network,
parser->network,
parser->db
这样做有效率吗?
在 c++ 中,我使用了消息机制,我过去只是将 msg(windows msg) 发布到相应线程的消息池中,并且在其消息池中的那个线程会获取它
有没有像java中的消息传递这样的机制我可以使用?
【问题讨论】:
-
你可能想试试像akka这样的基于actor的消息传递框架。
-
看来你需要 RxJava。看看这里github.com/ReactiveX/RxJava#concurrency-within-a-flow
标签: java multithreading message-queue