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