• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
 






dongdongag

 
 

Powered by 博客园
博客园 | 首页 | 新随笔 | 联系 | 订阅 订阅 | 管理

文章分类 -  并发编程

 
并发集合CopyOnWriteArrayList、BlockingQueue、SkipList
摘要:一、高效读取:CopyOnWriteArrayList 个人总结:适用于读多写少场景。另外读写操作未加锁,可能会读取一些修改未完成的脏数据,只能保证最终一致性,不能满足实时性要求:线程并发读读不加锁,读写不加锁,写写时copy份原数组,在副本里修改,修改完后再将副本数据替换回原数据。 在很多应用场景 阅读全文
posted @ 2021-05-14 22:34 dongdongag 阅读(13) 评论(0) 推荐(0)
线程池详解
摘要:1、http://ifeve.com/java-threadpool/ 2、线程池的使用:ThreadPoolExecutor(继承Executors和ExecutorService) 我们可以通过ThreadPoolExecutor来创建一个线程池。 public ThreadPoolExecut 阅读全文
posted @ 2021-03-07 17:34 dongdongag
捕获线程异常
摘要:一、设置线程异常回调接口 在线程的run 方法中,如果有受检异常必须进行捕获处理,如果想要获得run() 方法中出现的运行时异常信息, 可以通过回调UncaughtExceptionHandler 接口获得哪个线程出现了运行时异常.在Thread 类中有关处理运行异常的方法有: getDefault 阅读全文
posted @ 2021-03-06 17:21 dongdongag
ReadWriteLock读写锁
摘要:一、简介 ReadWriteLock是JDK5中提供的读写分离锁。读写分离锁可以有效地帮助减少锁竞争,以提升系统性能。用锁分离的机制来提升性能非常容易理解,比如线程A1、A2、A3进行写操作,B1、B2、B3进行读操作,如果使用重入锁或者内部锁,则理论上说所有读之间、读与写之间、写和写之间都是串行操 阅读全文
posted @ 2021-03-06 16:00 dongdongag
线程间通信(wait和notify)
摘要:一、等待通知机制 在单线程编程中,要执行的操作需要满足一定的条件才能执行,可以把这个操作放在if 语句块中. 在多线程编程中,可能A 线程的条件没有满足只是暂时的, 稍后其他的线程B 可能会更新条件使得A 线程的条件得到满足. 可以将A 线程暂停,直到它的条件得到满足后再将A 线程唤醒.它的伪代码: 阅读全文
posted @ 2021-02-28 10:35 dongdongag
线程同步CAS
摘要:一、CAS简介 CAS(Compare And Swap)是由硬件实现的.CAS 可以将read- modify - write 这类的操作转换为原子操作.i++自增操作包括三个子操作: 从主内存读取i 变量值 对i 的值加1 再把加1 之后的值保存到主内存 CAS 原理: 在把数据更新到主内存时, 阅读全文
posted @ 2021-02-21 11:09 dongdongag
增强的Future:CompletableFuture
摘要:一、简介 CompletableFuture是Java 8新增的一个超大型工具类。一方面,它实现了Future接口,而更重要的是,它也实现了CompletionStage接口。CompletionStage接口也是在Java 8中新增的。而CompletionStage接口拥有多达约40种方法,这个 阅读全文
posted @ 2020-10-29 23:28 dongdongag
信号量(Semaphore)
摘要:一、信号量(Semaphore) 信号量为多线程协作提供了更为强大的控制方法。广义上说,信号量是对锁的扩展。无论是内部锁synchronized还是重入锁ReentrantLock,一次都只允许一个线程访问一个资源,而信号量却可以指定多个线程,同时访问某一个资源。信号量主要提供了以下构造函数: pu 阅读全文
posted @ 2020-10-28 22:16 dongdongag
synchronized功能扩展:重入锁
摘要:一、重入锁ReentrantLock简介 重入锁可以完全替代synchronized关键字。在JDK 5.0的早期版本中,重入锁的性能远远好于synchronized,但从JDK 6.0开始,JDK在synchronized上做了大量的优化,使得两者的性能差距并不大。 重入锁使用java.util. 阅读全文
posted @ 2020-08-01 10:18 dongdongag
线程池
摘要:一、Executor线程池工具类 Executor框架提供了各种类型的线程池,主要有以下工厂方法: public static ExecutorService newFixedThreadPool(int nThreads) public static ExecutorService newSing 阅读全文
posted @ 2019-07-16 17:33 dongdongag
CountDownLatch倒计时器和循环栅栏CyclicBarrier
摘要:CountDownLatch 一、作用 用于主线程等待多个次线程执行完后再执行。比如API接口要求响应时间在200ms以内,但是如果一个接口内部依赖多个三方/外部服务,那串行调用接口的RT必然很久,所以个人用的最多的是接口RT优化场景,内部服务并行调用。 二、常用方法: CountDownLatch 阅读全文
posted @ 2019-07-16 11:51 dongdongag