wait()으로 대기 상태로 이동
notify()는 우선순위가 높은 스레드를 깨우고, notifyAll()은 모두 깨우지만 사실 크게 다르지 않다.
class Account
{
int bal = 0;
public synchronized void balanceChange(String name, boolean state)
{
if( state )
{
System.out.print(name + "=> 현재금액 : " + bal);
bal += 100;
System.out.println("\t=> 증가금액 : " + bal);
}
else
{
System.out.print(name + "=> 현재금액 : " + bal);
bal -= 100;
System.out.println("\t=> 감소금액 : " + bal);
}
}
}
class Thread1 extends Thread
{
Account ac = null;
boolean state = false;
String name = null;
@Override
public void run()
{
for( int i = 0 ; i < 50 ; i++ )
{
ac.balanceChange(name, state);
Thread.yield();
}
System.out.println(name + " : 완료!!");
}
Thread1(Account ac, boolean state, String name)
{
this.ac = ac;
this.state = state;
this.name = name;
}
}
public class SyncExam
{
public static void main(String[] args)
{
Account ac = new Account();
Thread1 th1 = new Thread1(ac, true, "입금자");
Thread1 th2 = new Thread1(ac, false, "출금자");
th1.start();
th2.start();
}
}