同时运行2个线程

时间:2009-04-20 16:13:41

标签: java multithreading network-programming simultaneous-calls

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

我已经尝试过设置计时器,但数据总是丢失了。

3 个答案:

答案 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读取,并且它是唯一一个读取,它将不会“遗漏”该流中的任何内容。