线程中卖票的代码实现

线程中卖票的代码实现。
class Demo  implements Runnable{
    private int ticket=10;
   //加入一个同步方法
     public synchronized void fun(){
         //把需要同步的地方放在同步方法之中
            if(this.ticket>0){
            try{
                Thread.sleep(100);
          }catch(Exception e){
         
          }
          System.out.println(Thread.currentThread().getName()+"卖票了:"+this.ticket--);
        }
     }
    public  void      run(){
           while(this.ticket>0){
                 this.fun();
       }
    }       
   }
  public class Test8{
       public static void main(String[] args){
                      Demo d=new Demo();
                      Thread t1=new Thread(d,"售票A");
                      Thread t2=new Thread(d,"售票B");
                      Thread t3=new Thread(d,"售票c");
                          t1.start();
                          t2.start();
                          t3.start();
  }                
  }
//上面的主要应该注意的就是,同步操作就是在方法之中加入一个syschronized关键字,表示此方法为同步方法。
//把需要同步操作的方法放在里面,就ok了

 

 

2、第二种写法

class Demo  implements Runnable{
    private int ticket=10;
   //加入一个同步方法

    public  void      run(){
           while(this.ticket>0){
              synchronized(this){
               if(this.ticket>0){
                try{
                Thread.sleep(100);
          }catch(Exception e){
         
          }
          System.out.println(Thread.currentThread().getName()+"卖票了:"+this.ticket--);
        }
        }
       }
    } 
}     

  public class Test10{
       public static void main(String[] args){
                      Demo d=new Demo();
                      Thread t1=new Thread(d,"售票A");
                      Thread t2=new Thread(d,"售票B");
                      Thread t3=new Thread(d,"售票c");
                          t1.start();
                          t2.start();
                          t3.start();
  }                
  }

 

//OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO

你可能感兴趣的:(thread,C++,c,C#)