处理多线程事件

时间:2012-05-25 12:32:15

标签: java multithreading network-programming

我正在实现简单版本的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 
}

1 个答案:

答案 0 :(得分: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以了解更多内容。