Test/JAVA Test

[JAVA 기초 문제] 공동 계좌에서 인출하기

오류나면꽥꽥 2023. 5. 26. 04:37

가족 공동 계좌
10000원

가족들은
5000원 씩 사용

가족 구성원은 3명
이때, 결제에 실패한 가족의 이름을
console에 출력!

 

 

package class01;

class Family extends Thread{
	Account a=new Account();

	@Override
	public void run() {
		a.use();
	}
}

class Account{
	static int money=10000; // 공유자원 돈
	synchronized void use() { // 동기화 : 내가 쓰는 동안은 접근하지마
		if(money>=5000) {
			System.out.println(Thread.currentThread().getName()+" 인출성공!");
			// 스레드가 멤버변수로 이름을 갖고 있다
			// 스레드 객체에 있는 이름을 받아옴
			
			/*
			 class Thread{
			 	private String name;
			 	Thread(){
   					this(new Thread(),null);
 				}
			 	Thread(Thread thread,String name){
			 		this.name=name;
			 	}
			 	getter,setter{
			 	}
			 
			 */
			money-=5000;
		}
		else {
			System.out.println(Thread.currentThread().getName()+" 인출실패..");
		}
		System.out.println("남은 돈: "+money);
		
	}
}

public class Test03 {
	public static void main(String[] args) {
		Family f=new Family();
		Thread t1=new Thread(f,"엄마");
		Thread t2=new Thread(f,"아빠");
		Thread t3=new Thread(f,"나");
		
		t1.start();
		t2.start();
		t3.start();

	}
}

출려)

엄마 인출성공!
남은 돈: 5000
아빠 인출성공!
남은 돈: 0
나 인출실패..
남은 돈: 0