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