线程之间的Java通信

时间:2014-04-30 13:59:15

标签: java multithreading pipe

我正在编写一个程序来演示距离矢量路由算法。该程序创建多个路由器及其路由表。每个路由器都是使用二维数组的自己的线程。我需要让线程将它们的表发送给另一个。我不确定如何在这些线程之间进行通信。我查看了套接字,但我没有收听任何端口。我不知道如何使用管道或者这是否是最好的选择。任何建议都会有所帮助。

3 个答案:

答案 0 :(得分:2)

如果您运行两个不同的进程,则可以使用套接字,JMS或文件来共享信息。

如果在一个进程中只运行两个线程,则应创建一些线程安全存储,例如ConcurrentLinkedQueue。这里有更多http://javarevisited.blogspot.com/2013/02/concurrent-collections-from-jdk-56-java-example-tutorial.html

答案 1 :(得分:2)

让每个实现您的路由线程的Runnable或Thread暴露(比如说)java.util.concurrent.TransferQueue<YourTableType>并将表传递给它。路由线程可以在休闲时从传输队列中拉出表。

java.util.concurrent软件包的文档记录非常详细,因此值得仔细研究。

答案 2 :(得分:0)

为什么不创建服务器/客户端并从客户端拨打服务器然后服务器将答案发送给其他客户端?

您需要创建2个文件server.java和client.java, 通过TCP建立连接客户端/服务器, 通过UDP从客户端到客户端的消息;

如果您需要任何帮助,我可以在大学里做过一些像这样的项目。