'thread'에 해당되는 글 1건

  1. 2006/01/05 Thread Test


/** 쓰레드 연습 **/
class Data{
       
       private String data;
       private boolean is_saved = false;
       
       public synchronized void setData(String arg){
              
               try{
                      
                      
                       if(is_saved){
                               wait();
                       }
               }
               catch (Exception e) {
                       System.out.println("SET error");
               }
              
               data = arg;
               is_saved = true;
               notify();
              
       }
       public synchronized  String getData(){
              
               try{
                       if(!is_saved)
                               wait();
                      
               }
               catch (Exception e) {
                       System.out.println("GET error");
               }
              
               String r = data;
               data = "";
               is_saved =false;
               notify();
               return r;
       }
       
       
       public boolean is_saved(){
               return is_saved;               
       }
       
}

class Producer extends Thread{
       Data s;
       Producer(String msg, Data ss){
               s=ss;
               System.out.println(msg);               
       }
       public void run(){
               int i=0;

               while(i<10){
                       try{
                       sleep((long)(Math.random()*1000));
                       }
                       catch (Exception e) {
                               // TODO: handle exception
                       }
                      
                       System.out.println( "producer is running : " +i);
                       s.setData("DATA ("+i+"): " + produce());
                               i++;
              
               }//end while

       }//end run
       
       private String produce(){
               int r ;
               r =(int)( Math.random()*10);
               return "" + r;
       }
       
}
class Consumer extends Thread{
       Data s;       
       
       Consumer(String msg,Data ss){
               s = ss;
       
               System.out.println(msg);
       }
       
       public void run(){
               int i=0;
               String data="";

               while(i<10){
                       try{
                               sleep((long)(Math.random()*1000));
                               }
                               catch (Exception e) {
                                       // TODO: handle exception
                               }
                              
                       System.out.println( "consumer is running : " + i);
                       data =s.getData();
                       System.out.println(">> " +  data);

                       i++;

                      
               }//end while

       }//end run       
}

class Ttest{
       public static void main(String args[])
       {
               Data data = new Data();
               Producer t1 = new Producer("P thread is ready", data);
               Consumer c1 = new Consumer("C thread is ready", data);
              
              
               t1.start();
               c1.start();
              
              
              
                              
       }               
}

/**

class Data{
       
       private String data;
       private boolean is_saved = false;
       
       public void setData(String arg){
               data = arg;
               is_saved = true;
       }
       public String getData(){
               String r = data;
               data = "";
               is_saved =false;
               return r;
       }
       
       
       public boolean is_saved(){
               return is_saved;               
       }
       
}

class Producer extends Thread{
       Data s;
       Producer(String msg, Data ss){
               s=ss;
               System.out.println(msg);               
       }
       public void run(){
               int i=0;

               try{
                       while(i<10){
                              
                               System.out.println( "producer is running : " +i);
                               if(s.is_saved()){
                                       yield();
                               }
                               else{
                                       s.setData("DATA ("+i+"): " + produce());
                                       i++;
                               }
                              
                       }//end while
               }
               catch (Exception e) {
                       System.out.println(e);
                       // TODO: handle exception
               }
       }//end run
       
       private String produce(){
               int r ;
               r =(int)( Math.random()*10);
               return "" + r;
       }
       
}
class Consumer extends Thread{
       Data s;       
       
       Consumer(String msg,Data ss){
               s = ss;
       
               System.out.println(msg);
       }
       
       public void run(){
               int i=0;
               String data="";

               try{
                       while(i<10){
                               System.out.println( "consumer is running : " + i);
                               if(s.is_saved()){
                                               data =s.getData();
                                               System.out.println(">> " +  data);
                                               //notifyAll();
                                               i++;
                               }
                               else{
                                       yield();
                                       yield();
                                      
                                       //this.wait();
                                       //this.suspend();
                               }
                              
                       }//end while
               }
               catch (Exception e) {
                       System.out.println(e);
                       // TODO: handle exception
               }
       }//end run       
}

class Ttest{
       public static void main(String args[])
       {
               Data data = new Data();
               Producer t1 = new Producer("P thread is ready", data);
               Consumer c1 = new Consumer("C thread is ready", data);
              
              
               t1.start();
               c1.start();
              
              
              
                              
       }               
}
**/