Java ArrayList.add导致冻结

问题描述 投票:0回答:1

我在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()发生。

java multithreading user-interface arraylist swingworker
1个回答
0
投票

您可以使用LinkedList而不是ArrayList

© www.soinside.com 2019 - 2024. All rights reserved.