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{
}
}
}

浙公网安备 33010602011771号