
并发与线程锁
wingedFish-李先生
这个作者很懒,什么都没留下…
展开
-
公平锁与非公平锁
在Java的ReentrantLock构造函数中提供了两种锁:创建公平锁和非公平锁(默认)。代码如下: public ReentrantLock() { sync = new NonfairSync(); } 在公平的锁上,线程按照他们发出请求的顺序获取锁,但在非公平锁上,则允许‘插队’:当一个线程请求非公平锁时,如果在发出请求的同时该锁变成可用状态,那么这个线程会跳过队列中所有的等待线程而获得锁。 非公平的Reentran原创 2014-11-23 15:40:48 · 2186 阅读 · 0 评论 -
Java并发之内存模型-JMM
发生线程安全性的时机: 变量存储在内存中,变量的计算是在CUP中。如果线程A要对变量a进行计算,需要经过三步:1)把变量a从内存中读取到CPU中,2)对变量a进行计算,3)把变量a写入到内存中。当线程A执行到第二步时,线程B也要对变量a进行计算,这时B从内存中读取到的值就是线程A写入到内存之前的值,脏数据就此产生了。原创 2014-11-29 23:25:14 · 1026 阅读 · 0 评论 -
curator 锁之 Shared Reentrant Lock
1、描述共享锁:全局同步分布式锁,同一时间两台机器只能有一台获得锁2、参与类InterProcessMutex3、用法3.1 创建 InterProcessMutex 实例public InterProcessMutex(CuratorFramework client, String path)Para原创 2015-01-10 20:37:09 · 2938 阅读 · 0 评论 -
ConcurrentHashMap的使用场景
在一次项目中,需要设计一个map存储线程资源池,为每种请求类型创建一个线程池。当该类型所对应的线程池中的所有线程都达到工作饱和状态,即是没有多余可用线程,则自动丢弃该类型的请求,以此来保证其他类型的请求不受影响。这中设计属于资源隔离中的线程池隔离,在微服务系统属于是很常见的场景。这种设计没什么难度,初始化一个成员变量map。当请求到达时,检查map中是否已经存在创建好的线程池即可,如果原创 2017-03-10 09:36:08 · 11170 阅读 · 1 评论