实现1:
通过java.util.concurrent.atomic中的原子性数据实现
static class Counter {// 通过加锁实现同步public static int count = 0;public static final Object obj = new Object();
// 通过原子性的整型来实现同步public static AtomicInteger count2 = new AtomicInteger();}
synchronized通过加锁实现:只是一个关键字,相当于一个指令,可以实现公平锁
class desc {public static int count = 0;public synchronized void add() {for (int i = 0; i < 10000; i++) {count++;}}public void dec() {synchronized (this) {for (int i = 0; i < 10000; i++) {count--;}}}
}
通过一个实例对象实现充当锁的实现
原理:
实现2:
ReentrantLock锁:可以实现公平锁和非公平锁
public static final ReentrantLock reentrantLock = new ReentrantLock();ReentrantLock lock = test2.reentrantLock;public void run() {for (int i = 0; i < 10000; i++) {// 通过ReentrantLock加锁lock.lock();try {Counter.count += 1;} finally {
// 通过ReentrantLock释放锁lock.unlock();}}}