3

在IM客户端的情况下。我做了2个独立的线程来处理发送数据包(通过std io)和接收数据包。问题是如何让这两个线程同时运行,以便我可以随时提示输入,同时随时准备接收数据包?同时运行2个线程

我已经尝试设置一个计时器,但数据总是丢失接收。

+1

一般来说,一段代码可以显示你的行为,对获得高质量的答案有很大的帮助。 – 2010-05-02 06:26:44

回答

7

我想你可能会错过一些显著有两种线程,流或两者:-)

你可以开始一个新的线程这样的:

 
myThread.start(); 

线程将被启动和运行()方法将由jvm自动执行。

如果线程run-method正在读取一个Stream,并且它是唯一一个读取,它将不会“错过”该流中的任何内容。

18

没有更多的细节,很难给出完整的答案。然而,这里是启动两个线程的代码:

Thread thread1 = new Thread() { 
    public void run() { 
    // ... your code here 
    } 
}; 
Thread thread2 = new Thread() { 
    public void run() { 
    // ... your code here 
    } 
}; 
thread1.start(); 
thread2.start(); 
+0

我的发送和接收线程分别依靠发送和侦听UDP套接字。从我所能理解的,你的示例代码似乎立即在代码中注入线程。我为他们创建了一个可运行的类,那么您的方法是否适用于此类? – lamsaitat 2009-04-20 16:22:42

7

那么,他们将无法运行同时除非你有一个多处理器计算机,但是这通常不是问题。会发生什么情况是每个线程都会得到一段时间,或多或少地取而代之。

如果你正在丢失I/O,这可能不是线程,这是你真正的问题。你能告诉我们你是如何阅读这些东西的吗?