これは、スレッドを使用して作成している小さなプログラムのスニペットです。
JOptionPane.showMessageDialog(null, "Before: " + thread.isAlive());
if (!thread.isAlive()) {
JOptionPane.showMessageDialog(null, "Thread is not alive.");
thread.start();
}
JOptionPane.showMessageDialog(null, "After: " + thread.isAlive());
このコードは、ボタンを使用してアクティブ化されます。最初にボタンを押すと、「前: false」と「後: true」が正しく表示されます。ボタンをもう一度押すと、誤って「Before: false」と「After: true」が表示されますが、スレッドを破棄したり変数をオーバーライドしたりしていないため、Before: true を期待します。
これが、私が取得している IllegalStateException の原因であると信じています (それについても間違っている場合は修正してください!)
誰かが私が間違っていることを説明できますか?
編集:
public class SomeClass extends Applet
{
private ClassThatExtendsThread thread;
public void init()
{
super.init();
//Some UI elements are created here.
thread = new ClassThatExtendsThread (/*there are some parameters*/);
}