实现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();
}
}
}