zoukankan      html  css  js  c++  java
  • JAVA基础之——JDK包分析concurrent

    concurrent在哪儿:jdkjrelib t.jar

    package java.util.concurrent;

    本文从特性、分类、扩展方面一一道来。

    1 特性

      包中包含大量有用的构建块,线程安全集合、线程池、信号和同步工具。可以用来改进并发的性能,使用这些后可以减少代码中的同步等。

    2 分类

    2.1 Atomic包

      包下实现了原子操作,移步原子操作

      原子操作核心思想是CAS(compare and swap)比较并操作,然后调用底层操作系统指令来完成。

      原子操作有对基本数据类型boolean、Integer、Long操作,对数组操作,对对象引用操作,对volatile字段原子操作。

    2.2 Lock包

      公平锁

      非公平锁

    2.3 其他

      BlockingQueue阻塞队列。

      CancellationException

      ConcurrentHashMap

      CopyOnWriteArrayList和CopyOnWriteArraySet绝对线程安全:写时复制容器,当我们往一个容器添加元素的时候,不直接往当前容器添加,而是将当前容器复制一个新容器,在新容器添加元素,添加完成后,再将引用指向新容器。

      CountDownLatch一个同步辅助类,调用await方法时,任何线程都被阻塞,直到锁计数减少为0,然后在该点等待的所有线程才被释放。

      应用场景:替代synchronized或同时处理一类操作

      CyclicBarrier一个同步辅助类,容许一组线程相互等待,直到这组线程达到某个公共的屏障点。

      Executor框架,用于管理实现Runnable的任务执行的整个框架。

      TimeUnit,其内部的sleep用Thread.sleep实现,可以设置时间单位,可用性更好些。


    如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!

  • 相关阅读:
    Zookeeper实战
    Zookeeper的结构和命令
    Zookeeper中的选举机制
    du 命令,对文件和目录磁盘使用的空间的查看
    rm命令
    linux之cp/scp命令+scp命令详解
    android 为应用程序创建桌面快捷方式技巧分享
    对自己的文件使用keystore签名
    Android 打包签名 从生成keystore到完成签名 -- 转
    Android App启动错误的问题(connection to the server was unsuccessful)
  • 原文地址:https://www.cnblogs.com/guobm/p/9944754.html
Copyright © 2011-2022 走看看