0

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

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

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

当某个信号发生时,主线程应该采取行动。

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

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

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

1 回答 1

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以了解更多信息。

于 2012-05-25T12:44:27.543 回答