Java中锁分类
摘要:锁的分类大致如下:公平锁/非公平锁可重入锁/不可重入锁独享锁/共享锁乐观锁/悲观锁分段锁 1、公平锁/非公平锁公平锁就是严格按照线程启动的顺序来执行的,不允许其他线程插队执行的;而非公平锁是允许插队的。 默认情况下 ReentrantLock 和 synchronized 都是非公平锁。Reentr
阅读全文
posted @
2018-09-26 21:42
Ruthless
阅读(1216)
推荐(0) 编辑
可重入锁 & 不可重入锁
摘要:可重入锁指同一个线程可以再次获得之前已经获得的锁,避免产生死锁。 Java中的可重入锁:synchronized 和 java.util.concurrent.locks.ReentrantLock。1、synchronized 使用方便,编译器来加锁,是非公平锁。2、ReenTrantLock 使
阅读全文
posted @
2018-09-25 11:21
Ruthless
阅读(3402)
推荐(0) 编辑
独享锁 & 共享锁
摘要:独享锁(互斥锁):同时只能有一个线程获得锁。比如,ReentrantLock 是互斥锁,ReadWriteLock 中的写锁是互斥锁。 共享锁:可以有多个线程同时获得锁。比如,Semaphore、CountDownLatch 是共享锁,ReadWriteLock 中的读锁是共享锁。 java5 Re
阅读全文
posted @
2018-09-23 04:35
Ruthless
阅读(1896)
推荐(0) 编辑
公平锁与非公平锁
摘要:公平锁就是严格按照线程启动的顺序来执行的,不允许其他线程插队执行的;而非公平锁是允许插队的。 默认情况下 ReentrantLock 和 synchronized 都是非公平锁。ReentrantLock 可以设置成公平锁。 《公平锁与非公平锁》
阅读全文
posted @
2018-09-21 23:31
Ruthless
阅读(389)
推荐(0) 编辑
Java多线程同步集合--并发库高级应用
摘要:一、阻塞队列1、在多线程领域,所谓阻塞,在某些情况下会挂起线程,一旦条件满足,被挂起的线程又会自动被唤醒2、ArrayBlockingQueue(效率高)和LinkedBlockingQueue是两个最常用的阻塞队列,一般情况下用来处理多线程间的生产者消费者问题。 二、并发队列ConcurrentL
阅读全文
posted @
2017-02-26 22:35
Ruthless
阅读(1837)
推荐(0) 编辑
分段锁——ConcurrentHashMap
摘要:1、线程不安全的HashMap因为多线程环境下,使用Hashmap进行put操作会引起死循环,导致CPU利用率接近100%,所以在并发情况下不能使用HashMap。 2、效率低下的HashTable容器HashTable容器使用synchronized来保证线程安全,但在线程竞争激烈的情况下Hash
阅读全文
posted @
2016-01-14 21:18
Ruthless
阅读(11289)
推荐(0) 编辑