题
多线程java应用程序中进程间通信的最佳方法是什么?
它应该是性能(请不要JMS)易于实现且可靠,以便对象和数据只能绑定到一个线程?
欢迎任何想法!
解决方案
假设场景 1 JVM,多个线程,那么 java.util.concurrent 确实是需要查看的地方,特别是各种 Queue 实现。然而,在此之上的抽象可能会很好,而且那里 捷特兰 看起来很有趣,轻量级的Java消息传递。
其他提示
我建议查看整个 java.util.concurrent 包,其中有多个类用于处理并发和线程之间不同的通信方式。一切都取决于您想要实现的目标,因为您的问题非常笼统。
您应该使用生产者/消费者队列。通过这样做,您可以避免多线程编程的陷阱:竞争条件和死锁。另外,如果您使用 Disruptor 或 MentaQueue 这样的无锁队列,它不仅更容易、更干净,而且速度也会更快。我写了一篇博客文章,详细讨论了这一点,并展示了如何获得 < 100 纳秒的延迟: 具有两位数纳秒延迟的线程间通信.
我刚刚在 github 上添加了 MappedBus (http://github.com/caplogic/mappedbus)这是一个高效的 IPC 库,它使多个 Java 进程/JVM 能够通过交换消息进行通信,并使用内存映射文件进行传输。经测量,吞吐量为 4000 万条消息/秒。
不隶属于 StackOverflow