![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JUC
文章平均质量分 52
Java JUC
一步一念
在路上
展开
-
Java 锁
对于SYNCHRONIZED而言,也是一种非公平锁。可重入锁,可以避免死锁。原创 2024-04-03 20:26:45 · 199 阅读 · 0 评论 -
阻塞队列(BlockingQueue)
在多线程领域:所谓阻塞,在某些情况下会刮起线程(即阻塞),一旦条件满足,被挂起的线程又会自动被唤醒。阻塞队列的好处是,我们不需要关心什么时候需要阻塞线程,什么时候唤醒线程。在concurrent包发布以前,在多线程环境下,我们每个程序员都必须去自己控制这些细节,尤其还要兼顾效率和线程安全,而这会给我们程序带来不小的复杂度。原创 2024-04-03 20:22:02 · 312 阅读 · 0 评论 -
Volatile
假如开始两个线程读取主内存的数值都是1,A线程进行 number++操作,计算完成,即将刷新到主内存,此时A线程被挂起,B线程进行number++ 操作,写入主内存,这个时候主内存是2,A获取到了CPU资源,也把2写入主内存,导致了计算丢失一次(写覆盖),即保证不了原子性.,首先要将变量从主内存拷贝到自己的工作内存空间,然后对变量进行操作,操 作完成后,再将变量写会主内存,不能直接操作主内存中的变量,各个线程中的工作内存中存储着主内存中的变量副本拷贝,因。,所有线程都可以访问,原创 2024-03-30 10:35:37 · 553 阅读 · 0 评论 -
Semaphore(信号量)
常用于限制可以访问某些资源的线程数量,例如通过 Semaphore 限流。Semaphore 是一个计数信号量,必须由获取它的线程释放。原创 2024-03-30 10:20:33 · 121 阅读 · 0 评论 -
Java 线程池
获取多线程的方法,我们都知道有三种,还有一种是实现Callable接口实现Runnable接口实现Callable接口实例化Thread类使用线程池获取。原创 2024-03-29 18:58:37 · 1061 阅读 · 1 评论 -
CountDownLatch(计数器)
将CountDownLatch的计数器初始化为new CountDownLatch(n),每当一个任务线程执行完毕,就将计数器减1 countdownLatch.countDown(),当计数器的值变为0时,在CountDownLatch上await()的线程就会被唤醒。做法是初始化一个共享的CountDownLatch(1),将其计算器初始化为1,多个线程在开始执行任务前首先countdownlatch.await(),当主线程调用countDown()时,计数器变为0,多个线程同时被唤醒。原创 2024-03-28 14:15:47 · 282 阅读 · 0 评论 -
CyclicBarrier(循环屏障)
CyclicBarrier 的字面意思是可循环(Cyclic)使用的屏障(Barrier)。它要做的事是:让一组线程到达一个屏障(也可以叫同步点)时被阻塞,直到最后一个线程达到屏障时,屏障开放行,所有被放行的线程才会继续任务,线程进入屏障通过CyclicBarrier 的await()方法。原创 2024-03-28 14:09:31 · 211 阅读 · 0 评论