IM クライアントの場合。パケットの送信 (std io による) とパケットの受信を処理するために、2 つの別個のスレッドを作成しました。問題は、これら 2 つのスレッドを同時に実行して、いつでもパケットを受信できるようにしながら、入力を求め続けることができるようにする方法です。
すでにタイマーを設定しようとしましたが、データの受信が常に失われます。
IM クライアントの場合。パケットの送信 (std io による) とパケットの受信を処理するために、2 つの別個のスレッドを作成しました。問題は、これら 2 つのスレッドを同時に実行して、いつでもパケットを受信できるようにしながら、入力を求め続けることができるようにする方法です。
すでにタイマーを設定しようとしましたが、データの受信が常に失われます。
詳細が不明なため、完全な回答を提供することは困難です。それでも、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();
スレッド、ストリーム、またはその両方で重要な何かを見逃した可能性があると思います:-)
次のような新しいスレッドを開始できます。
myThread.start();
スレッドが開始され、run()メソッドがjvmによって自動的に実行されます。
スレッドのrun-methodがStreamから読み取りを行っていて、それが唯一の読み取りである場合、そのストリーム内の何かを「見逃す」ことはありません。
マルチプロセッサ コンピュータを使用していない限り、それらは同時に実行されませんが、通常は問題になりません。何が起こるかというと、各スレッドは多かれ少なかれ交互に時間の一部を取得します。
I/O が失われている場合、本当の問題はおそらくスレッドではありません。これをどのように読んでいるのか教えていただけますか?