Java ArrayList.add导致冻结

时间:2014-03-30 00:06:15

标签: java multithreading user-interface arraylist swingworker

我在Java应用程序中使用SwingWorker来防止GUI冻结。

应用程序使用10%CPU并正常响应,但是一旦我在循环中添加ArrayList.add(),GUI就会冻结,应用程序使用100%CPU。

class TestWorker extends SwingWorker<Integer, Integer> {
    @Override
    protected Integer doInBackground() throws Exception {
        ArrayList arr_1 = new ArrayList<>();
        ArrayList arr_2 = new ArrayList<>();

        for(int i = 0; i < 999999999; i++) {
            arr_1.add(2);
            arr_2.add(4);
        }

        return null;
    }
}

new TestWorker().execute();

为什么会这样?如果我只是在循环中做很多计算或创建对象,GUI就不会冻结,这似乎只能使用ArrayList.add()来实现。

0 个答案:

没有答案