스레드 관련 공부하고 있어요~

스레드 공부하고 있는데 관련 예제를 좀 풀고있어요~

스레드가 시작이 안되네요ㅠ
원래 배운 예제 소스는 이게 아니고 메인에서 쓰레드를 start시켜서출금하는 형식인데요

가만보니까 그 소스는synchronized쓰니 쓰레드가 동기화는 되는데

출금단계에서 쓰레드 한개(엄마 쓰레드)만 들어와서 실행되네요(반복문 문제인거 같긴합니다)

제가 원하는건 엄마쓰레드 들어온다음에 아들 쓰레드 들어오는 형식이거든요..ㅠㅠ

보니까 run()에서 while을 써주면 run에서 계속 놀게(?)되서 그런거 같아서

반복을 balancing()메서드로 빼줬습니다

그리고 생성자에서 각 스레드를 start시켜야 엄마,아들 랜덤하게 들어올거 같다는 생각이 들어서

처리를 해봤는데 잘 안되네요..

컴파일시 에러는 없는데 실행을 시키면 그냥 아무것도 안나오는 문제예요

많은 가르침 주시면 감사하겠습니다.~꾸벅~ 더운데 수고하세요^^
import java.io.*;

public class atmtest implements runnable{
long balance = 100000; //잔액
long withdrawmoney; //찾고자 하는 금액
&n long ischeck; runnable r;
thread t;
thread mom;
thread son;

public atmtest(){
r = new thread();
t = new thread(r);
mom = new thread(t,엄마);
son = new thread(t,아들);
mom.start();
son.start();
}

public synchronized void run(){
while(true){
bufferedreader in = new bufferedreader(new inputstreamreader(system.in));
system.out.println(\n현재 접속 중 : + thread.currentthread().getname());
system.out.print(찾고자 하는 금액을 입력하세요 : );
try{
withdrawmoney = long.parselong(in.readline());
system.out.println(\t\t +withdrawmoney + 원을 출금합니다);
}catch(ioexception e){
e.printstacktrace(); //system.out.println(e.tostring());
}
this.balancing();
}
}
public synchronized void balancing(){
balance-=withdrawmoney;

if(balance 0){
system.out.println(잔액이 부족합니다);
system.exit(0);
}
system.out.println(\t\t남은 잔액은 + balance + 원 입니다);
}
public static void main(string[] args){
new atmtest();
}
}

프로그램 개발일반 다른 글

목록