Java多线程操作<二>

同步段代码演示(关键代码段),wait(),notify()方法只能在snychronized标示的代码段和方法中使用,并且需要异常处理.

/**
 *
 */

/**
 * @author Administrator
 *
 */
public class TicketSystem {

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  TicketThread Thsys=new TicketThread();
  new Thread(Thsys).start();
  new Thread(Thsys).start();
  new Thread(Thsys).start();
  new Thread(Thsys).start();
 }

}

 


public class TicketThread implements Runnable{

 int index=100;
 Object obj=new Object();
 @Override
 public void run() {
  // TODO Auto-generated method stub
  while(true){
   ///*
   //synchronized(obj){//同步代码段
   synchronized(this){//同步代码段
   if(index>0){
    try{
     Thread.sleep(10);
    }catch(Exception e){
     e.printStackTrace();
    }
    System.out.println(Thread.currentThread().getName()+" sell ticket : " + index);
    index--;
   }else{
    break;
   }
   }
   //*/
   shel();
  }
 }
 
 public synchronized void shel(){//同步代码段方法,给this枷锁,替换同步代码段
  
  if(index>0){
   try{
    Thread.sleep(10);
   }catch(Exception e){
    e.printStackTrace();
   }
   System.out.println(Thread.currentThread().getName()+" sell ticket : " + index);
   index--;
  }else{
   
  }  
 }

}

posted @ 2013-07-24 13:39  MMLoveMeMM  阅读(125)  评论(0)    收藏  举报