3

IM クライアントの場合。パケットの送信 (std io による) とパケットの受信を処理するために、2 つの別個のスレッドを作成しました。問題は、これら 2 つのスレッドを同時に実行して、いつでもパケットを受信できるようにしながら、入力を求め続けることができるようにする方法です。

すでにタイマーを設定しようとしましたが、データの受信が常に失われます。

4

3 に答える 3

21

詳細が不明なため、完全な回答を提供することは困難です。それでも、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();
于 2009-04-20T16:16:22.833 に答える
7

スレッド、ストリーム、またはその両方で重要な何かを見逃した可能性があると思います:-)

次のような新しいスレッドを開始できます。

myThread.start();

スレッドが開始され、run()メソッドがjvmによって自動的に実行されます。

スレッドのrun-methodがStreamから読み取りを行っていて、それが唯一の読み取りである場合、そのストリーム内の何かを「見逃す」ことはありません。

于 2009-04-20T16:23:23.083 に答える
7

マルチプロセッサ コンピュータを使用していない限り、それらは同時に実行されませんが、通常は問題になりません。何が起こるかというと、各スレッドは多かれ少なかれ交互に時間の一部を取得します。

I/O が失われている場合、本当の問題はおそらくスレッドではありません。これをどのように読んでいるのか教えていただけますか?

于 2009-04-20T16:17:02.863 に答える