![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程
文章平均质量分 92
YPhen
公众号同步【YPhen聊码】同步更新!
无需关注,无需知识付费,纯技术分享;博客提升自我,帮助他人,若有益,吾之幸,因吾价值尚存 !
展开
-
静态代码块中使用 ExecutorService 执行多线程会出现什么情况呢?
我们可以看到 一般场景 和 static {} 场景 的运行结果完全不同,static {} 场景 则出现了等待超时的情况,而不是等待所有线程都运行结束,这是为什么呢?原创 2024-02-05 11:00:49 · 899 阅读 · 0 评论 -
BlockingQueue 示例及使用场景
我们在日常开发中会经常碰到这样的场景,总是感觉某个程序去处理数据或者完成某个数据推送的时候有点慢,那就让多个线程去执行呗,可有时候处理逻辑是有顺序的,比如先更新主表在更新从表,或者是多个任务之间有依赖关系,先执行任务1再执行任务2,这种情况下我们就可以使用 BlockingQueue。原创 2023-03-29 23:20:58 · 902 阅读 · 0 评论 -
CountDownLatch / Semaphore 示例及使用场景
AQS 内部有一个 state 标记状态,CountDownLatch 和 Semaphore 都是借助这个状态标记作为一个计数器来实现控制多个线程的,计数器的初始值为线程的数量,每个线程执行完后计数器会减一,当计数器的值是 0 的时候,表示所有的线程都已经完成了任务。原创 2023-01-08 11:56:25 · 625 阅读 · 0 评论 -
ReentrantLock 示例及原理(Synchronized区别)
ReentrantLock 基于 AQS 框架应用的实现,是 JDK1.5 提供的线程并发控制的手段,和 synchronized 关键字的功能类似,是一种互斥锁,可以保证线程的安全。那么我们在实例化的时候可以发现,构造方法 ReentrantLock(boolean fair) 是带了 fair 参数的,参数为true 是公平锁,false 是非公平锁。原创 2023-01-02 14:57:25 · 953 阅读 · 0 评论 -
AQS核心原理
AQS全称是(抽象对了同步器),是一个抽象类,在 juc 包下面,Java 并发编程核心都在这个包下面,大多数同步器实现都是围绕着共同的基础行为,比如说:等待队列、条件队列、独占获取、共享队列等,而这个行为就是基于实现,AQS是定义了一套多线程访问共享资源的同步器框架,也是一个依赖于状态(state)的同步器。原创 2023-01-01 12:37:15 · 676 阅读 · 0 评论