java并发
同步
如果多个线程都要对一个对象进行修改,那么最后的结果会取决于两个线程访问数据的顺序,这种情况称为竞态条件。为了避免多线程破坏数据,需要在编写代码时用到同步机制。
ReentrantLock 锁
下面是一个表示账户的类,演示了如何使用重入锁:
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
public class Account {
private final Lock lock;
private int balance;
public Account(int balance) {
lock = new ReentrantLock();
this.balance = balance;
}
public void transfer(boolean isAdd, int number){
lock.lock();
try {
if (isAdd) balance += number;
else balance