深入理解Java虚拟机 469 页跑出List溢出的代码调整。

在这里插入图片描述

public class TestMain {

    private static Vector<Integer> vector = new Vector<>();

    public static void main(String[] args) {
        while(true) {
            for (int i = 0; i < 1000; i++) {
                vector.add(i);
            }
            Thread removeThread = new Thread(() -> {
                for (int i = vector.size() - 1; i >= 0; i--) {
                    vector.remove(i);
                }
            });
            Thread printThread = new Thread(() -> {
                for (int i = 0 ; i < vector.size() ; i++) {
                    System.out.println(i);
                }
            });
            removeThread.start();
            printThread.start();
            while(Thread.activeCount() > 20);
        }
    }
}

  1. for (int i = 0; i < 1000; i++) 首先循环次数搞大点。
  2. for (int i = vector.size() - 1; i >= 0; i--) remove线程里的循环倒序。

这样增大碰撞率,就会出现作者说的异常了。

猜你喜欢

转载自blog.csdn.net/cainiao1412/article/details/106055028
今日推荐