T17_LockAccountTest
private final ReentranLock lock = new ReentranLock();
public void deposite(int money) {
lock.lock(); // 동기화 시작
balance += money; // 동기화 처리 부분
lock.unlock(); //동기화 해제
}
public boolean withdraw(int money) {
lock.lock(); //lock을 통해서 동기화 가능
boolean chk = false;
//try~catch 블럭을 사용할 경우에는
//unlock()메서드 호출은 finally블럭에서 하도록 한다.
try {
if(balance >= money) {
for(int i=1; i <= 1000000000; i++) {} // 시간 때우기
balance -= money;
System.out.println("메서드 안에서 = "+ getBalance());
chk = true;
}
}catch(Exception ex) {
chk = false;
}finally {
lock.unlock(); //잠금해제
}
return chk;
}
}