Javaでいくつかのジョブを実行するスレッドを起動し、JTable
をJProgressBar
に更新するアプリを開発しています。 私はいくつかのJMenuItem
たJTable
上JPopupMenu
develope:だから私はそれを行うことができるようにしたいJavaでスレッドを停止、一時停止、キャンセルする方法
- ポーズ
- 停止
- が
- 再開
をキャンセルします。
ユーザーがJTable
に新しいスレッドを追加すると、私はArrayList<Thread>
にスレッドを保存するので、私は
stop.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ae) {
}
});
やその他を実装する必要があります。..
ので、私は持っているという仮説を、してみてください現在のスレッドのインデックス:
Thread t = working.get(selectedThread); //where working is my `ArrayList<Thread>`
t.interrupt();
何も...それは仕事を続ける... ので、私は試してみてください。
try {
working.get(actualRow).wait();
} catch (InterruptedException ex) {
Logger.getLogger(PannelloRicerca.class.getName()).log(Level.SEVERE, null, ex);
}
が、それは私にwait()
にIllegalStateMonitorException
を取得するので、私が行う方法がわからない...誰かが私を助けることができますか?
waitを呼び出すには、working.get(actualRow)オブジェクトをロックする必要があります。それがIllegalStateMonitorExceptionを取得している理由です。 waitはsynchronizedブロックまたはsynchronizedメソッドから呼び出すことができます。スレッドで割り込み呼び出しを使用する代わりに、スレッドの変数を設定してスレッドに通知を送信します。スレッドではこの値を使用して実行を停止します。 – Delta