多线程
Devin__Yang
简历请投yangding@youzan.com 有赞零售招高级java 职位详情:https://www.zhipin.com/job_detail/1412453118.html?ka=job-10
展开
-
Java中的synchronized、ReentrantLock两种锁对比
一、结论1.synchronized或ReentrantLock 分别在什么时候使用呢?答:在确实需要一些 synchronized 所没有的特性的时候,比如时间锁等候、可中断锁等候、无块结构锁、多个条件变量或者锁投票。 ReentrantLock 还具有可伸缩性的好处,应当在高度争用的情况下使用它,但是,大多数 synchronized 块几乎从来没有出现过争用,所以可以把高度争用放在一边。我原创 2016-09-26 16:13:10 · 583 阅读 · 0 评论 -
ReentrantReadWriteLock与ReentrantLock对比分析
一.前言ReentrantReadWriteLock与ReentrantLockde的关系并不是雷峰塔与雷锋的关系。 个人理解: synchronized ——> ReentrantLock ——> ReentrantReadWriteLock是JVM逐渐向程序员放权的过程。 synchronized是将线程管理的操作全部交给了JVM,开发人员不需要关心线程的锁、线程切换等细节,反正在方法上或原创 2016-09-26 19:07:15 · 1114 阅读 · 0 评论 -
ConcurrentHashMap简介
1.ConcurrentHashMap结构一个ConcurrentHashMap里包含一个Segment数组,Segment也是一种可重入锁ReentrantLock,在ConcurrentHashMap里扮演锁的角色, 一个Segment里包含一个HashEntry数组,每个HashEntry是一个链表结构的元素,HashEntry则用于存储键值对数据,每个Segment守护者一个HashEntr原创 2016-10-06 17:34:14 · 727 阅读 · 0 评论 -
Java中的Copy-On-Write简介
一、CopyOnWrite概念CopyOnWrite容器通俗的理解是当我们往一个容器添加元素的时候,不直接往当前容器添加,而是先将当前容器进行Copy,复制出一个新的容器,然后新的容器里添加元素,添加完元素之后,再将原容器的引用指向新的容器。这样做的好处是我们可以对CopyOnWrite容器进行并发的读,而不需要加锁,因为当前容器不会添加任何元素。所以CopyOnWrite容器也是一种读写分离的思想原创 2016-10-08 09:38:55 · 871 阅读 · 0 评论 -
Twitter Snowflake算法详解
一、简介Twitter Snowflake算法是用来在分布式场景下生成唯一ID的。举个栗子:我们有10台分布式MySql服务器,我们的系统每秒能生成10W条数据插入到这10台机器里,现在我们需要为每一条数据生成一个全局唯一的ID, 并且这些 ID 有大致的顺序。二、算法图解 如图:最后生成的ID是一个long类型,long占64bit,符号位占1位,剩下63位,我们将这63位拆分成4段,就可以表示原创 2016-10-09 19:48:56 · 4476 阅读 · 5 评论 -
ReentrantLock方式实现生产者-消费者模式
生产者与消费者类:public class MyService { private ReentrantLock lock = new ReentrantLock(); private Condition condition = lock.newCondition(); private boolean hasValue = false; public void set()原创 2017-02-25 11:26:27 · 1144 阅读 · 0 评论 -
synchronized方式实现生产者-消费者模式
生产者:public class Producer { private String lock; public Producer(String lock){ super(); this.lock = lock; } public void setValue(){ try{ synchronized (原创 2017-02-25 11:09:03 · 1316 阅读 · 0 评论 -
java多线程常用关键字与方法介绍(一)
一synchronizedsynchronized 非静态方法synchronized 静态方法synchronized 代码块二volatile三wait notify一、synchronized1.synchronized & 非静态方法服务类public class MyService{ private int count; synchronized publ原创 2017-02-25 15:32:36 · 4438 阅读 · 0 评论 -
java多线程常用关键字与方法介绍(二)
一ReentrantLock类二ReentrantReadWriteLock类三Condition一、ReentrantLock类服务类:public class MyService { private Lock lock = new ReentrantLock(); public void methodA() { lock.lock(); for原创 2017-02-25 17:42:02 · 600 阅读 · 0 评论