JUC(java.util.concurrent)简介说明
下文笔者讲述java之JUC简介说明,如下所示
JUC简介
JUC 在Java 5.0添加的java.util.concurrent包的简称 包含在rt.jar中 它为了更好的支持高并发任务 让开发者利用这个包进行的 多线程编程时可以有效的减少竞争条件和死锁线程
JUC组成
JUC由以下5部分组成
1.tools 工具类
CountDownLatch: 闭锁 是一个同步辅助类 在完成一组正在其他线程中执行的操作之前 它允许一个或多个线程一直等待 CyclicBarrier: 栅栏 一个同步辅助类 允许一组线程互相等待 直到到达某个公共屏障点 并且在释放等待线程后可以重用 Semaphore: 信号量 是一个计数信号量 它的本质是一个“共享锁“ 信号量维护了一个信号量许可集 线程可以通过调用 acquire()来获取信号量的许可; 当信号量中有可用的许可时,线程能获取该许可; 否则线程必须等待,直到有可用的许可为止 线程可以通过release()来释放它所持有的信号量许可
2.atomic原子性包
有AtomicBoolean、AtomicInteger、AtomicIntegerArray等原子变量类 他们的实现原理大多是持有它们各自的对应的类型变量value volatile关键字修饰 这样来保证每次一个线程要使用它都会拿到最新的值
3.locks锁包
JDK提供的锁机制 相比synchronized关键字来进行同步锁 功能更加强大 它为锁提供了一个框架 该框架允许更灵活地使用锁包含的实现类 有: ReentrantLock: 它是独占锁 指只能被独自占领 即同一个时间点只能被一个线程锁获取到的锁。 ReadWriteLock: 它包括子类ReadLock和WriteLock ReadLock是共享锁 WriteLock是独占锁 LockSupport: 具备阻塞线程和解除阻塞线程的功能 并且不会引发死锁。
4.collections并发集合包
ArrayBlockingQueue 阻塞队列 CopyOnWriteArraylist 并发ArrayList, 读多写少场景 CopyOnWriteArraySet,ConcurrentSkipListSet并发HashSet,TreeSet ConcurrentHashMap,ConcurrentSkipListMap并发HashMap,TreeMap
5.Executor 执行者
Java里面线程池的顶级接口 它只是一个执行线程的工具 真正的线程池接口是ExecutorService FixedThreadPool 线程固定 无界缓冲队列 适用于任务数量不均匀,对内存压力不敏感的场景 CacheThreadPool 不限线程数,适用于短时间要求低延迟的任务场景 SingleThreadPool 适用于异步执行顺序的场景 ScheduleThreadPool 支持固定频率和固定延迟的场景
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。