package concurrentstudy;
import java.io.IOException;
import java.util.*;
import java.util.concurrent.BrokenBarrierException;
import java.util.concurrent.CyclicBarrier;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
public class CompareLock {
public static Integer count=0;
public static AtomicInteger ai = new AtomicInteger(0);
public static void main(String[] args) {
ExecutorService es = Executors.newFixedThreadPool(100);
long start= System.currentTimeMillis();
for(int i=1;i<=200000;i++){
es.submit(new Runnable() {
public void run() {
synchronized (ExecutorService.class) {
count+=1;
}
}
});
}
es.shutdown();
while(!es.isTerminated()){
}
long end= System.currentTimeMillis();
System.out.println(end-start);
System.out.println(count);
ExecutorService es2 = Executors.newFixedThreadPool(100);
count=0;
final Lock lock = new ReentrantLock ();
long start2= System.currentTimeMillis();
for(int i=1;i<=200000;i++){
es2.submit(new Runnable() {
public void run() {
lock.lock();
count+=1;
lock.unlock();
}
});
}
es2.shutdown();
while(!es2.isTerminated()){
}
long end2= System.currentTimeMillis();
System.out.println(end2-start2);
System.out.println(count);
ExecutorService es3 = Executors.newFixedThreadPool(100);
long start3= System.currentTimeMillis();
for(int i=1;i<=200000;i++){
es3.submit(new Runnable() {
public void run() {
CompareLock.ai.incrementAndGet();
}
});
}
es3.shutdown();
while(!es3.isTerminated()){
}
long end3= System.currentTimeMillis();
System.out.println(end3-start3);
System.out.println(ai);
}
}
输出:
437
200000
313
200000
265
200000
分享到:
相关推荐
资源概要:1,多线程;2,synchronized;3,volatile;4,多线程在JVM中的实现...原子类Atomic-CAS及其实现原理 锁Lock-AQS核心原理剖析 并发工具类、并发容器、阻塞队列 线程池原理剖析 线程池案例-Web容器-压力测试
5.Lock-free:atomic、concurrentMap.putIfAbsent、CopyOnWriteArrayList 6.关于锁的经验介绍 7.并发流程控制手段:CountDownLatch、Barrier 8.定时器:ScheduledExecutorService、大规模定时器TimerWheel 9.并发三...
java.util.Queue 分布式 of java.util.Deque 分布式 java.util.Map 分布式 java.util.concurrent.ConcurrentMap 通过TTL实现可重入 java.util.concurrent.locks.Lock 分布式 java.util.concurrent.atomic....
5、Lock-free: atomic、concurrentMap.putIfAbsent、CopyOnWriteArrayList ☆ ☆ ☆ 6、关于锁使用的经验介绍 7、并发流程控制手段:CountDownlatch、Barrier 8、定时器: ScheduledExecutorService、大规模定时器...
5、Lock-free: atomic、concurrentMap.putIfAbsent、CopyOnWriteArrayList☆☆☆ 6、关于锁使用的经验介绍 7、并发流程控制手段:CountDownlatch、Barrier 8、定时器: ScheduledExecutorService、大规模定时器...
5、Lock-free: atomic、concurrentMap.putIfAbsent、CopyOnWriteArrayList☆☆☆ 6、关于锁使用的经验介绍 7、并发流程控制手段:CountDownlatch、Barrier 8、定时器: ScheduledExecutorService、大规模定时器...
25 JAVA8 与元数据.................................................................................................................................25 2.4. 垃圾回收与算法 .................................
25 JAVA8 与元数据.................................................................................................................................25 2.4. 垃圾回收与算法 .................................
Concurrent programming ... 32 Java and the Internet .......... 33 What is the Web? ......................... 33 Client-side programming ............ 34 Server-side programming ............ 38 Summary ...