juc包

作者: 秋秋_6403 | 来源:发表于2020-05-12 22:05 被阅读0次

java.util.concurrent,并发包

  1. CopyOnWriteArrayList是线程安全的。
package util;

import java.util.concurrent.CopyOnWriteArrayList;

public class TestCopyOnWriteArrayList {
    public static void main(String[] args) {
        CopyOnWriteArrayList<String> list = new CopyOnWriteArrayList<String>();
        for(int i = 0; i< 10000;i++){
            new Thread(()->{
                list.add(Thread.currentThread().getName());
            });
        }
        try {
            Thread.sleep(3000);//这里是为了防止主线程先执行完,而子线程还没有创建完,获取的list.size()可能不准,所以让主线程休眠,确保子线程执行完。
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println(list.size());
    }
}
  1. java.util.concurrent.locks.Lock
    synchronized是隐式锁,Lock是显示锁。ReentrantLock类是可重入锁,实现了Lock,不要忘记释放锁。
image
image
import java.util.concurrent.locks.ReentrantLock;

public class TestLock implements Runnable {
    private static int ticketNum = 3;
    private boolean flag = true;

    //定义Lock锁
    private final ReentrantLock lock = new ReentrantLock();

    @Override
    public void run() {

        while (flag) {

            try {
                lock.lock();//加锁
                if (ticketNum > 0) {
                    Thread.sleep(100);
                    System.out.println(Thread.currentThread().getName() + "获得票" + ticketNum--);
                } else {
                    flag = false;
                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                lock.unlock(); //释放锁
            }

        }

    }

    public static void main(String[] args) {
        TestLock lock = new TestLock();

        Thread thread = new Thread(lock);
        Thread thread1 = new Thread(lock);
        Thread thread2 = new Thread(lock);
        thread.start();
        thread1.start();
        thread2.start();


    }
}

相关文章

  • JUC并发编程

    JUC介绍 在 java 5.0 提供了 java.util.concurrent (简称JUC )包,在此包...

  • JUC并发编程引导学习(超长篇)

    JUC并发编程学习 1、什么是JUC juc是Java并发编程的一个工具包,包名为java.util.concur...

  • JUC java并发包

    1. JUC 简介 在 Java 5.0 提供了java.util.concurrent(简称JUC)包,在此包中...

  • JUC-001-volatile与内存可见性

    JUC简介 在Java 5.0 提供了java.util.concurrent(简称JUC )包,在此包中增加了在...

  • Java中CAS 基本实现原理

    一、前言 了解CAS,首先要清楚JUC,那么什么是JUC呢?JUC就是java.util.concurrent包的...

  • volatile 关键字 内存 可见性

    Java JUC简介 在 Java 5.0 提供了 java.util.concurrent (简称JUC )包,...

  • juc包

    java.util.concurrent,并发包 CopyOnWriteArrayList是线程安全的。 java...

  • JUC包

    JUC包原因 synchronized性能不高;(JDK1.6及以前版本) wait/notify太原始,难用;例...

  • 结合ReetrantLock理解AQS

    AQS简介 Java中Juc包如图所示,基于volatile和CAS搭建起Juc包,其中AQS是其中很重要的抽象框...

  • 001--JUC是什么鬼

    话题一:JUC是什么鬼? 在Java 5.0 提供了java.util.concurrent(简称JUC )包,在...

网友评论

      本文标题:juc包

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