原子性
package com.yulang.threadpool.thread;
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 LockTest {
private volatile AtomicInteger i=new AtomicInteger();
public void add(){
i.incrementAndGet();
}
public static void main(String[] args) throws InterruptedException {
LockTest lockTest = new LockTest();
for(int j=0;j<2;j++){
new Thread(()->{
for(int i=0;i<10000;i++){
lockTest.add();
}
}).start();
}
TimeUnit.SECONDS.sleep(2);
System.out.println(lockTest.i);
}
}
java8新增的效率更高,採用的是分佈式計算方式
package com.yulang.threadpool.thread;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.LongAdder;
public class LockTest {
private volatile LongAdder i=new LongAdder();
public synchronized void add(){
i.increment();
}
public static void main(String[] args) throws InterruptedException {
LockTest lockTest = new LockTest();
for(int j=0;j<2;j++){
new Thread(()->{
for(int i=0;i<10000;i++){
lockTest.add();
}
}).start();
}
TimeUnit.SECONDS.sleep(2);
System.out.println(lockTest.i);
}
}