ReentrantLock中公平锁与非公平锁的效率对比
2017-08-31 13:08
459 查看
程序逻辑如下:开20个线程,共享一个static的int变量race,每个线程所做的事情只有一个:将race自增十万次。同时,使用参数-XX:+PrintGCDetails显示JVM的GC情况
具体代码如下:
实践证明,高并发情况下公平锁效率比非公平锁效率低了十倍以上
具体代码如下:
public class Test { public static volatile int race=0; public static ReentrantLock lock = new ReentrantLock(false); public static void increase(){ lock.lock(); race++; //变量自增操作 lock.unlock(); } private static final int THREADS_COUNT=20; public static void main(String[]args){ AtomicReference<Thread> sign =new AtomicReference<>(); Thread[]threads=new Thread[THREADS_COUNT]; //定义20个线程 for(int i=0;i<THREADS_COUNT;i++){ threads[i]=new Thread(new Runnable(){ @Override public void run(){ for(int i=0;i<100000;i++){ increase(); } } }); threads[i].start(); }//等待所有累加线程都结束 while(Thread.activeCount()>1) { Thread.yield(); } System.out.println(race); } }
实践证明,高并发情况下公平锁效率比非公平锁效率低了十倍以上
相关文章推荐
- java多线程20 : ReentrantLock中的方法 ,公平锁和非公平锁
- java多线程随手记——ReentrantLock的公平锁与非公平锁
- Java之ReentrantLock公平锁和非公平锁
- 【试验局】ReentrantLock中非公平锁与公平锁的性能测试
- [多线程_reentrantlock公平锁与非公平锁]
- Java中ReentrantLock的公平锁和非公平锁
- ReentrantLock的公平锁与非公平锁浅析
- java之ReentrantLock公平锁和非公平锁
- ReentrantReadWriteLock重入锁中的读写锁在公平和非公平模式下的资源抢占测验
- ReentrantLock之公平锁与非公平锁浅析
- AbstractQueuedSynchronizer(九)——ReentrantLock公平和非公平锁
- Java多线程之Lock的使用--重入锁(ReentrantLock)、Condition、公平锁和非公平锁、ReentrantReadWriteLock的使用(读写锁)
- Java中的ReentrantLock和synchronized两种锁定机制的对比
- Java中的ReentrantLock和synchronized两种锁定机制的对比
- Java中的ReentrantLock和synchronized两种锁定机制的对比
- java线程 公平锁 ReentrantLock(boolean fair)
- Java中的ReentrantLock和synchronized两种锁定机制的对比
- Java中的ReentrantLock和synchronized两种锁定机制的对比
- Java中的ReentrantLock和synchronized两种锁定机制的对比
- Java多线程synchronized、ReentrantLock、ReentrantReadWriteLock 和StampedLock 的对比