对于IM客户端。我已经做了2个单独的线程来处理发送数据包(通过std io)和接收数据包。问题是如何让这两个线程同时运行,以便我可以随时提示输入,同时随时准备接收数据包?
我已经尝试过设置计时器,但数据总是丢失了。
答案 0 :(得分:20)
如果没有更多细节,很难给出完整的答案。不过,这是启动两个线程的代码:
Thread thread1 = new Thread () {
public void run () {
// ... your code here
}
};
Thread thread2 = new Thread () {
public void run () {
// ... your code here
}
};
thread1.start();
thread2.start();
答案 1 :(得分:7)
好吧,他们不会同时运行 ,除非你有一台多处理器计算机,但这通常不是问题。会发生什么事情,每个线程将或多或少地获得一段时间。
如果您正在丢失I / O,那可能不是线程是您的真正问题。你能告诉我们你是怎么读这些东西的吗?
答案 2 :(得分:7)
我认为你可能错过了Threads,Streams或两者的重要内容: - )
您可以开始这样的新主题:
myThread.start();
线程将被启动,run()方法将由jvm自动执行。
如果线程run-method正在从Stream读取,并且它是唯一一个读取,它将不会“遗漏”该流中的任何内容。