使用synchronized关键字或者Lock锁控制并发
示例代码:
使用synchronized关键字:
public class AtomicLongDemo{ private static long count = 0; private static final Object lock = new Object();
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
new Thread(new Runnable() {
@Override
public void run() {
for (int j = 0; j < 10000; j++) {
synchronized (lock) {
count++;
}
}
}
}).start();
}
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("count=" + count);
}
}
使用Lock锁:
public class AtomicLongDemo{ private static long count = 0; private static Lock lock = new ReentrantLock();
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
new Thread(new Runnable() {
@Override
public void run() {
for (int j = 0; j < 10000; j++) {
lock.lock();
try {
count++;
} finally {
lock.unlock();
}
}
}
}).start();
}
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("count=" + count);
}
}