게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
자바 쓰레드 관련있습니다.
게시물ID : programmer_5907짧은주소 복사하기
작성자 : 홍기씨
추천 : 0
조회수 : 565회
댓글수 : 6개
등록시간 : 2014/10/11 21:35:10
옵션
  • 본인삭제금지
제목 없음.png
 
과제가 이런과제인데
class Buffer{
  private int money = 100000;
  boolean aval = false;
  synchronized int payment10(int pay10){
  
   while(aval == true){
    try{
     wait();
     }catch(Exception e){}
   }
   notify();
   money -= pay10;
   aval = true;;
   return money;
   }
  synchronized int payment5(int pay5){
   while(aval == false){
    try{
     wait();
    }catch(Exception e){}
   }
   notify();
   money -= pay5;
   aval = false;;
   return money;
   }
int getmoney() {
   return money;
  }
}
class customers10 extends Thread {
  Buffer b;
  int pay;
  customers10(String Name,Buffer b,int pay){
   super(Name);
   this.b = b;
   this.pay = pay;
  }
  public void run() {
 
   for(int i= 0; i<20; i++){
   
    System.out.println(getName()+", 출금 = "+ pay + ", 통장잔액  = " + b.payment10(pay));
   
    if(b.getmoney()<=55000 ) {
     b.aval = true;
     break;
     }
  try {
    sleep(200);
    }catch(Exception e){}
   
    }
  
  }
 }
 class customers5 extends Thread {
  Buffer b;
  int pay;
  customers5(String Name,Buffer b,int pay){
   super(Name);
   this.b = b;
   this.pay = pay;
  }
  public void run() {
 
   for(int i= 0; i<20; i++){
    System.out.println(getName()+", 출금 = "+ pay + ", 통장잔액  = " + b.payment5(pay));
   
    if(b.getmoney() <=50000 ){
     break;
    
    }
  
 
   
    try {
    sleep(200);
    }catch(Exception e){}
   
    }
  
  }
 }
public  class 과제2번 {
  public static void main(String[] args){
 
   System.out.println("출금시스템");
   Buffer b = new Buffer();
   customers10 c1 = new customers10("쓰레드1", b, 10000);
   customers5 c2 = new customers5("쓰레드2", b, 5000);
   c1.start();
   c2.start();
   try{
    c1.join();
    c2.join();
   
   }catch(Exception e){}
  
   System.out.println("**최종 통장 잔액  = " + b.getmoney()+"**");
  }
 }
 

소스를 이정도 까지 구현했습니다. 근데 
제목 없음.png

 
이렇게 나오는데 질문이
1. 문제의 질문처럼 마지막 다른 쓰레드의 출금이 안된다고까지 프린트하려면 어떻게 해야되나요?
 출력을 하기전에 쓰레드를 break를 시켜서 그런거같기도하고 break를 걸지 않고 출력을 하면 엉뚱한 출력이 됩니다.
 
질문이기네요 죄송합니다. 과제를 잘 내서 점수를 잘 받는것보다는 이 문제가 어떻게 풀어지고 어떻게 구동되는지 알고싶어서 질문드립니다
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호