在当前线程上调用sleep会使我的主GUI停顿

Sur*_*dhi -1 java user-interface multithreading halt

我有一个DataThread继承自Thread的类.我用两个DataThread对象ReadThread和WriteThread.我有另一个Main_GUI正在运行的线程.

现在,当我按下一个按钮时,main_GUI它调用一个方法x.method1()然后这个方法使用WriteThread方法WriteThread.sleepForReset().在

public void sleepForReset(){
    try {
        sleep(28000);
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}
Run Code Online (Sandbox Code Playgroud)

当我按下main_GUIGUI停止按钮28000几毫秒.如果我打电话给睡觉,WriteThread为什么它会停止main_GUI?是因为睡眠是一种静态的方法吗?如果有,是否有人可以建议如何睡觉WriteThread而不影响Main_GUI?

akf*_*akf 6

如果WriteThread.sleepForReset()从actionPerformed方法中调用,实际上是在EventDispatch Thread中调用它.即使您有一个表示WriteThread的对象,从EventDispatch线程中调用该对象上的方法也会导致该过程在EDT中执行.

看一下在Java中使用工作线程的本教程.请注意,仅仅拥有一个继承的类是不够的Thread,您需要启动这些Thread的实例才能拥有多线程应用程序.提供的教程将为您提供一个入门方法的好主意.