处理另一个线程而不冻结gui

时间:2019-03-19 03:14:53

标签: java

我不知道我在做什么错,但是我看了无数的例子,而且似乎做对了。我有一个扩展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();

这只是一个可行的示例,最终将处理成千上万个文件,估计可能需要30分钟才能完成。因此,我希望它在后台运行。但是,应用程序在运行时不会响应。我唯一能做的就是移动窗口。我在做什么错了?

0 个答案:

没有答案