美文网首页
同步容器的应用

同步容器的应用

作者: 永远的太阳0123 | 来源:发表于2018-09-19 10:05 被阅读0次

    启动若干线程,并行访问同一个容器中的数据。保证获取容器中数据时没有数据错误,且线程安全。
    如:售票,秒杀等业务。

    方式一:使用同步

    public class Test1 {
    
        static List<String> list = new ArrayList<>();
    
        public static void main(String[] args) {
            for (int i = 0; i < 10000; i++) {
                list.add("String " + i);
            }
            for (int i = 0; i < 10; i++) {
                new Thread(new Runnable() {
                    public void run() {
                        while (true) {
                            synchronized (list) {
                                if (list.size() <= 0) {
                                    break;
                                }
                                System.out.println(Thread.currentThread().getName() + " - " + list.remove(0));
                            }
                        }
                    }
                }, "Thread" + i).start();
            }
        }
    
    }
    

    方式二:使用同步容器

    public class Test2 {
    
        static Queue<String> list = new ConcurrentLinkedQueue<>();
    
        public static void main(String[] args) {
            for (int i = 0; i < 10000; i++) {
                list.add("String " + i);
            }
            for (int i = 0; i < 10; i++) {
                new Thread(new Runnable() {
                    public void run() {
                        while (true) {
                            String str = list.poll();
                            if (str == null) {
                                break;
                            }
                            System.out.println(Thread.currentThread().getName() + " - " + str);
                        }
                    }
                }, "Thread" + i).start();
            }
        }
    
    }
    

    相关文章

      网友评论

          本文标题:同步容器的应用

          本文链接:https://www.haomeiwen.com/subject/uksvnftx.html