私は現在のスレッドを見ていました: ブール変数が真になるのを待つスレッドを作成する方法は?
誰もがお互いに反対しているように見え、誰も十分に説明していなかったので、これを最も簡単な方法で提示します. これが今日の私のコードです。
boolean connecting = false;
public static void main(String[] args) {
initUI();
while(true) {
if(connecting) {
connecting = false;
doSomething();
}
};
}
initUI() は、ユーザー インターフェイスを開始するメソッドです。ユーザーが「Connect」というクラスのボタンをクリックすると、アクション リスナーが呼び出され、ブール値の「connecting」が「true」に設定されます。if 領域に入ると、ブール値が「false」にリセットされ、必要なコードが実行されます。
ただし、これは機能します... CPUの使用量が多すぎます。
ボタン アクション リスナーを doSomething() メソッドに直接設定すると、ボタンをリセットするためにアクション リスナー メソッドを終了する必要があるため、プログラムがジャムします (また、そうする必要があります)。ただし、doSomething() にはループ (チャット プログラム) があるため、切断するまで元の while (ここにコードで表示されています) には戻りません。
だから私の質問は、ブール値がtrueに変わるのを「待つ」ことはありますか?例えばリスナー?
回答: Joni のおかげで、スレッドを実装しました。
ボタン actionListener には以下が含まれるようになりました。
(new connectThread()).start();
そして、私のスレッドは次のようになります。
public class connectThread extends Thread {
public void run() {
ui.btn.setEnabled(false);
doSomething();
ui.btn.setEnabled(true);
}
}
質問のタイトルについては、ブール値が変更されるのを待って、別の人が説明したように、イベントリスナーを設定できます。