java并发
文章平均质量分 91
澎仔
追求卓越技术,不断突破自我的互联网人
展开
-
AbstractQueuedSynchronizer——JUC包的基石(下)
你知道CyclicBarrier和CountDownLatch两大方面的差别吗原创 2022-10-11 21:47:14 · 103 阅读 · 0 评论 -
AbstractQueuedSynchronizer——JUC包的基石(上)
浅谈AQS——JUC包的基石原创 2022-10-10 22:44:54 · 139 阅读 · 0 评论 -
ThreadLocal通过增加资源保证线程安全
如何保证线程安全控制资源的访问、使用(即保证在同一时刻只能有一个线程对资源访问、使用成功);我们常使用加锁或者通过更复杂的CAS来控制资源的访问来达到线程安全;除了控制资源的访问,我们还可以通过增加资源来保证所有对象的线程安全。我们只要给每一个线程都分配不同的资源对象,那么从线程安全的角度来看也是满足的。java中的ThreadLocal便是通过上述第二种思路来保证线程安全的。简单用法@SpringBootTest@RunWith(SpringRunner.class)public cla原创 2020-12-02 22:18:27 · 147 阅读 · 0 评论 -
synchronized锁升级,JDK6中的锁优化
synchronized锁升级,JDK6中的锁优化从JDK5升级到JDK6后,JDK实现了各种锁优化技术,如轻量级锁、偏向锁、适应性自旋、锁消除等。在JDK对锁进行优化了之后,synchronized相应的也没那么“重”了HotSpot虚拟机中的对象头轻量级锁偏向锁适应性自旋锁锁消除从JDK5升级到JDK6后,JDK实现了各种锁优化技术,如轻量级锁、偏向锁、适应性自旋、锁消除等。在JDK对锁进行优化了之后,synchronized相应的也没那么“重”了HotSpot虚拟机中的对象头第一部分用于存储对原创 2020-10-21 21:52:51 · 2310 阅读 · 0 评论 -
使用BlockingQueue阻塞队列实现生产者与消费者
BlockingQueue阻塞式队列主要实现类:使用有界队列ArrayBlockingQueue实现生产者与消费者;public class ArrayBlockingQueueTest { private static ArrayBlockingQueue<Integer> queue = new ArrayBlockingQueue(10); @Test public void test() { Runnable add = () ->原创 2020-08-09 21:17:22 · 240 阅读 · 0 评论 -
java中的线程池ThreadPoolExecutor
java中的线程池什么是线程池JDK对线程池的支持线程池工厂Executors计划任务ScheduledExecutorService核心线程池的内部实现线程池常用方法什么是线程池虽然与进程相比,线程是一种轻量级的工具,但其创建和关闭仍然需要花费时间。当线程数量过大时,反而会耗尽CPU和内存资源,大量的线程回收也会给GC带来很大的压力,延长GC的停顿时间。线程池中,总有那么几个活跃线程。当你需要使用线程时,可以从池子中随便拿一个空闲线程,当完成工作时,并不着急关闭线程,而是将这个线程退回到池子中,方原创 2020-08-09 18:32:06 · 115 阅读 · 0 评论 -
JDK常用并发工具类
JDK常用并发工具类Semaphore信号量ReadWriteLock读写锁CountDownLatch倒计数器CyclicBarrier循环栅栏LockSupport线程阻塞工具类Semaphore信号量信号量可以指定多个线程同时访问某一个资源。而synchronized和重入锁ReentrantLock都只允许一个线程访问一个资源。构造函数public Semaphore(int permits)public Semaphore(int permits, boolean fair)常原创 2020-08-03 10:41:34 · 332 阅读 · 0 评论 -
ReentrantLock重入锁
ReentrantLock重入锁简述特性总结简述重入锁ReentrantLock可以完全替代synchronized关键字。而且重入锁可以灵活性更高,功能更强大。在JDK1.5之前性能也更好,但是从JDK1.6开始,JDK在synchronized中做了大量的优化,两者的性能差距并不会很大。public class ReenterLock implements Runnable{ public static ReentrantLock lock = new ReentrantLock();原创 2020-07-26 23:56:02 · 77 阅读 · 0 评论 -
java内存模型(Java Memory Model,JMM)
java内存模型java内存模型(Java Memory Model,JMM)简述内存间交互操作关键字volatile原子性可见性有序性先行发生原则java内存模型(Java Memory Model,JMM)简述Java内存模型规定了所有的变量都存储在主内存(Main Memory)中,而每条线程有自己的工作内存,线程的工作内存中保 存了当前线程使用的变量的主内存副本。Java内存模型的主要目的是定义程序中各种变量的访问规则,即关注在虚拟机中把变量值存储到内存和从内存中取出变量值这样的底层细节。原创 2020-07-14 23:48:10 · 358 阅读 · 0 评论