Java 在不冻结gui的情况下处理另一个线程

Java 在不冻结gui的情况下处理另一个线程,java,Java,我不知道我做错了什么,但我已经看了无数的例子,似乎不能得到它的权利。我有一个扩展JFrame的应用程序,在构造函数的末尾(只是为了测试,它不会停留在那里),我有以下代码: SwingWorker<Boolean, Integer> worker = new SwingWorker<Boolean, Integer>(){ protected Boolean doInBackground() throws Exception{

我不知道我做错了什么,但我已经看了无数的例子,似乎不能得到它的权利。我有一个扩展JFrame的应用程序,在构造函数的末尾(只是为了测试,它不会停留在那里),我有以下代码:

    SwingWorker<Boolean, Integer> worker = new SwingWorker<Boolean, Integer>(){
        protected Boolean doInBackground() throws Exception{

            for(int i=0; i<1000000; i++) {
                publish(i);
            }

            return true;
        }

        protected void process(List<Integer> chunks) {

            for(int n : chunks) {
                System.out.println(n);
            }


        }

        protected void done() {
            boolean status = false;
            try {
                status = get();
            }catch(Exception e) {

            }
        }

    };

    worker.execute();
SwingWorker-worker=新的SwingWorker(){
受保护的布尔值doInBackground()引发异常{

对于(int i=0;我已尝试调用
worker。在
WindowListener
windowOpened
方法中执行
,而不是
JFrame
的构造函数?有关更多详细信息,请参阅。我认为您需要找到一个更完整的示例来演示UI线程卡住。这似乎不足以揭示e问题。我想可能是所有的系统。out调用是挂断GUI的原因。我把它取出来,用我正在做的文件处理替换了它,并运行了一个测试样本,它工作得很好。