2012-05-25 208 views
0

我正在实现TCP的简单版本,但缺乏多线程技术。主线程控制2个线程:处理多线程事件

1.定时器(倒计时时间,如果超时,通知主线程再做一些工作)

2.永远听传入的数据包,循环。如果接收到数据包,则更新主线程中的一些数据

主线程在发生某些信号时应采取措施。

我没有事件处理的经验和设计一些信号通知主线程。 我应该从哪里开始?例如,子线程更新主线程专用字段。或者我应该创建一些事件?

这里的主线程一些伪代码:

while(true){ 
    event: send data ,then ... 
    event: timeout , then send packet again 
    event: packet received, then update data in private filed 
} 
+0

你做了什么研究?你看过什么网络资源? – Gray

+0

@Grey http://docs.oracle.com/javase/tutorial/essential/concurrency/pools.html和Excutor接口,BlockingQueue接口 – CodeFarmer

回答

1

如果你是新在Java多线程的概念,我建议您阅读本教程第一:http://docs.oracle.com/javase/tutorial/essential/concurrency/

讨论你的具体问题,你应该有两个线程: - 一个用于监听您的套接字,这将扩展线程。它应该在施工时收到对主要对象的引用,并不断收听您的套接字。当有东西到达时,该线程将调用主对象的处理例程以采取行动。只有在忙碌的等待时才要小心 - 在套接字尚未准备就绪的情况下产出一段时间 - 你的计时器可能是TimerTask的扩展。看看http://www.cloudhadoop.com/2012/01/timers-in-java-create-timer-in-java.html为了解更多。