2017-08-22 3 views
0

私はスレッドを以下のように拡張するクラスを持っていますが、実行するかどうかを決定するためにチェックするvolitileブール値フィールドが必要です。 shouldRun()メソッドは、私のGUIのEDTから呼び出されます。volatile booleanを使用してスレッドを実行するかどうかをチェックする方法(Java)

ブール値をチェックして、GUIのイベントディスパッチャスレッドから実行するか待機するかを知るにはどうすればよいですか?一般的に

public class RobotThread extends Thread{ 

    public volatile boolean run; 
    //if running == true, let thread run 
    //if running == false, invoke wait() somehow; 

    public RobotThread(AutoClicker autoClicker) { 
     super(autoClicker); 
     run = true; 
    } 

    public void setRun(boolean shouldRun) { 
     this.run = shouldRun; 
    } 

    public boolean getRun() { 
     return run; 
    } 
} 

、私は()を待ってから、ボタンと私のGUIのイベントディスパッチャスレッドから再起動するには、このスレッドを取得できるようにしたいです。これを行うためのより良い方法があれば、私もそれを聞いて嬉しいです。前もって感謝します!

+0

EDTからどのように再起動しますか?それはユーザーの行動ですか、何ですか? EDTとは何ですか?あなたのスレッドが実行されるのを待っていますか?スレッドの同期を処理する一般的な方法は、同期オブジェクトを使用することです。あなたはこのhttp://tutorials.jenkov.com/java-concurrency/synchronized.htmlを開始するためにチェックすることができます –

答えて

1

私は無限ループ、waitnotifyの方法があなたが探しているものと思っています。たとえば、this guideを見てください。

+0

私にリソースを指してくれてありがとう、それを得ました! 私は、wait()とnotify()がうんざりして、私にillegalMontiterExceptionsを与えている理由です。問題は私の同時性が本当にないと思う。 私はこの質問を削除する必要がありますか? – Jeff

+0

良いお力になれて、嬉しいです。しかし、私たちはすべて間違いを犯していますが、誰かがこの投稿を必要とするかもしれません。 – hadilq

関連する問題