设为首页 加入收藏

TOP

JDK并发包详细总结(八)
2018-06-09 10:07:58 】 浏览:782
Tags:JDK 发包 详细 总结
sp; }


    // 从list中读数据
    public static class ReadThread implements Runnable {


        @Override
        public void run() {
            System.out.println("start read size: " + list.size() + " thread : " + Thread.currentThread().getName());
            for (UUID uuid : list) {
                System.out.println("Read uuid : " + uuid + " size : " + list.size() + "thread: " + Thread.currentThread().getName());
            }
        }
    }



    public static void main(String[] args) throws InterruptedException {
        initThread(new AddThread(), 10);
        initThread(new ReadThread(), 100);
    }


    private static void initThread(Runnable runnable, int maxNum) throws InterruptedException {
        Thread[] ts = new Thread[maxNum];
        for (int k = 0; k < maxNum; k++) {
            ts[k] = new Thread(runnable);
        }
        for (int k = 0; k < maxNum; k++) {
            ts[k].start();
        }
    }
}


下图运行结果中可以看出来, 同一个线程, 即使在读的过程中发生了size变化, 也不会抛出ConcurrentModificationException






编程开发网
首页 上一页 5 6 7 8 下一页 尾页 8/8/8
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Java高并发之线程池详解 下一篇Java高并发之无锁与Atomic源码分析

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

array(4) { ["type"]=> int(8) ["message"]=> string(24) "Undefined variable: jobs" ["file"]=> string(32) "/mnt/wp/cppentry/do/bencandy.php" ["line"]=> int(217) }