Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Swing中出现死锁,不确定如何继续_Java_Multithreading_Swing_Swingworker - Fatal编程技术网

Java Swing中出现死锁,不确定如何继续

Java Swing中出现死锁,不确定如何继续,java,multithreading,swing,swingworker,Java,Multithreading,Swing,Swingworker,在Java Swing应用程序中,单击按钮时会调用以下代码: class MyWorker extends SwingWorker<String, Object> { @Override protected String doInBackground() throws Exception { loadMasterFile(); judgeFileListModel = new DefaultListModel(); /

在Java Swing应用程序中,单击按钮时会调用以下代码:

class MyWorker extends SwingWorker<String, Object> {

    @Override
    protected String doInBackground() throws Exception {
        loadMasterFile();
        judgeFileListModel = new DefaultListModel();
        // Refresh model
        return "Done.";
    }

    @Override
    protected void done() {
        LB.setVisible(false);
    }
}

new MyWorker().execute();
在调用的代码中,我打开了一个JFileChooser。它第一次运行时非常好-如果在代码完成后再次按下按钮,它将挂起。如果我随后调试并暂停,当这种情况发生时,我似乎有一个死锁

我不知道如何处理这件事——还是个学生

如果可能的话,我非常想得到一些帮助

编辑:

我已经修好了


对于任何有类似问题的人-这是由于JFileChooser在loadMasterFile方法中。在doInBackground中包含任何GUI代码显然违反了swing规则,因此我对其进行了重构,效果很好。

我们不知道loadMasterFile中发生了什么,但它不返回任何内容,可能不是线程安全的。@his我可以通过让它返回一个值来实现线程安全吗?我可以让它返回真实的完成或什么?对不起,我想我在这里有点匆忙。如果该方法是在MyWorker本身中定义的,那么这并不是我假设的强烈暗示。不过,您似乎访问了似乎在别处的对象LB,顺便说一句,这是一个错误的变量名。如果您在loadMasterFile中这样做,这也可能是问题的一部分。您需要向我们显示失败的特定调用的更多上下文。@他的“我有一个密码对话框”要求输入密码-无论我选择“取消”还是“确定”,它都会继续,并且不会显示JFileChooser。我用showOpenDialognull调用它,而不是这个-如果它difference@his我还应该提到,在JFileChooser之后询问密码之前,现在是在单击之前,根本不起作用。