并发
文章平均质量分 86
徒步凉城-Jasper
代码一撸到底
展开
-
Java7/8中的 HashMap和ConcurrentHashMap全解析
原文出处: JavaDoop今天发一篇"水文",可能很多读者都会表示不理解,不过我想把它作为并发序列文章中不可缺少的一块来介绍。本来以为花不了多少时间的,不过最终还是投入了挺多时间来完成这篇文章的。网上关于 HashMap 和 ConcurrentHashMap 的文章确实不少,不过缺斤少两的文章比较多,所以才想自己也写一篇,把细节说清楚说透,尤其像 Java8 中的 ConcurrentHa...转载 2018-11-10 21:59:26 · 308 阅读 · 0 评论 -
Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
CountDownLatch用法CountDownLatch类位于java.util.concurrent包下,利用它可以实现类似计数器的功能。比如有一个任务A,它要等待其他4个任务执行完毕之后才能执行,此时就可以利用CountDownLatch来实现这种功能了。CountDownLatch类只提供了一个构造器:public CountDownLatch(int count) { }; ...转载 2018-12-13 10:29:14 · 116 阅读 · 0 评论 -
分布式事务杂谈
什么是分布式事务分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。以上是百度百科的解释,简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务需要保证这些小操作要么全部成功,要么全部失败。本质上来说,分布式事务就是为了保证不同数据库的数据一致性。分布式事务的产生的原因数据...转载 2018-12-13 10:25:05 · 137 阅读 · 0 评论 -
Java 技术之volatile
volatile关键字的两层语义当一个共享变量(类的成员变量、类的静态成员变量)被volatile修饰之后,那么就具备了两层语义:保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。禁止进行指令重排序。volatile保证变量的可见性每个线程在运行过程中都有自己的工作内存,那么线程1在运行的时候,会将共享变量的值拷贝一份放在自...转载 2018-11-30 16:56:37 · 122 阅读 · 0 评论 -
Java技术之AQS详解
AQS是AbstractQueuedSynchronizer的简称。AQS提供了一种实现阻塞锁和一系列依赖FIFO等待队列的同步器的框架,如下图所示。AQS为一系列同步器依赖于一个单独的原子变量(state)的同步器提供了一个非常有用的基础。子类们必须定义改变state变量的protected方法,这些方法定义了state是如何被获取或释放的。鉴于此,本类中的其他方法执行所有的排队和阻塞机制。子类...转载 2018-11-30 16:56:04 · 225 阅读 · 0 评论 -
深入分析synchronized的实现原理
记得刚刚开始学习Java的时候,一遇到多线程情况就是synchronized,相对于当时的我们来说synchronized是这么的神奇而又强大,那个时候我们赋予它一个名字“同步”,也成为了我们解决多线程情况的百试不爽的良药。但是,随着我们学习的进行我们知道synchronized是一个重量级锁,相对于Lock,它会显得那么笨重,以至于我们认为它不是那么的高效而慢慢摒弃它。诚然,随着Javs SE...转载 2018-11-18 13:23:46 · 156 阅读 · 0 评论 -
Java锁--Lock实现原理(底层实现)
转自 Java锁–Lock实现原理(底层实现)关于java lock的底层实现原理,讲的有点深,转载学习!Lock完全用Java写成,在java这个层面是无关JVM实现的。在java.util.concurrent.locks包中有很多Lock的实现类,常用的有ReentrantLock、ReadWriteLock(实现类ReentrantReadWriteLock),其实现都依赖java....转载 2018-11-18 13:22:50 · 227 阅读 · 0 评论 -
ThreadLocal内存泄露
关于ThreadLocal内存泄露的备忘ThreadLocal从名字上来说就很好理解,就是用于线程(Thread)私有(Local)的存储结构,这种结构能够使得线程能够使用只有自己能够访问和修改的变量,从而实现多个线程之间的资源互相隔离,达到安全并发的目的。也因此,ThreadLocal作为线程并发中的一种资源使用方式,得到了很广泛的应用,比如Spring MVC、Hibernate等。不过...转载 2018-11-10 22:04:06 · 151 阅读 · 0 评论 -
SynchronousQueue同步队列
SynchronousQueue简介Java 6的并发编程包中的SynchronousQueue是一个没有数据缓冲的BlockingQueue,生产者线程对其的插入操作put必须等待消费者的移除操作take,反过来也一样。不像ArrayBlockingQueue或LinkedListBlockingQueue,SynchronousQueue内部并没有数据缓存空间,你不能调用peek()方...转载 2018-11-10 22:03:18 · 1230 阅读 · 0 评论 -
并发策略-CAS算法
转自对于并发控制而言,我们平时用的锁(synchronized,Lock)是一种悲观的策略。它总是假设每一次临界区操作会产生冲突,因此,必须对每次操作都小心翼翼。如果多个线程同时访问临界区资源,就宁可牺牲性能让线程进行等待,所以锁会阻塞线程执行。与之相对的有一种乐观的策略,它会假设对资源的访问是没有冲突的。既然没有冲突也就无需等待了,所有的线程都在不停顿的状态下持续执行。那如果遇到问题了无锁的...转载 2018-11-10 22:00:24 · 329 阅读 · 0 评论 -
Java线程池原理
线程池的优点1、线程是稀缺资源,使用线程池可以减少创建和销毁线程的次数,每个工作线程都可以重复使用。2、可以根据系统的承受能力,调整线程池中工作线程的数量,防止因为消耗过多内存导致服务器崩溃。Executor 框架与线程池在 Java 5 之后,并发编程引入了一堆新的启动、调度和管理线程的API。Executor 框架便是 Java 5 中引入的,其内部使用了线程池机制,它在 jav...原创 2018-12-14 14:08:06 · 176 阅读 · 0 评论