这是我正在使用线程制作的一个小程序的片段。
JOptionPane.showMessageDialog(null, "Before: " + thread.isAlive());
if (!thread.isAlive()) {
JOptionPane.showMessageDialog(null, "Thread is not alive.");
thread.start();
}
JOptionPane.showMessageDialog(null, "After: " + thread.isAlive());
使用按钮激活此代码。当我第一次按下按钮时,我正确地得到“之前:假”,然后是“之后:真”。当我再次按下按钮时,我错误地得到“之前:假”,然后是“之后:真”,但期望之前:真,因为我没有破坏线程或覆盖变量。
我相信这就是导致我得到的 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*/);
}