class MyThread implements Runnable{
private int ticket = 5 ; // 假设一共有5张票
Object obj=new Object();
public void run(){
for(int i=0;i<100;i++){
synchronized(this){ // 此处若使用synchronized(obj)一样达到同步,为什么使用obj也可以?不知道这两种有什么区别?
if(ticket>0){ //把此段代码放入同步方法中,请问此时方法中的this和上面的obj是一样吗?和同步代码块中的this是一样吗?
try{
Thread.sleep(300) ;
}catch(InterruptedException e){
e.printStackTrace() ;
}
System.out.println("卖票:ticket = " + ticket-- );
}
}
}
}
};
public class SyncDemo02{
public static void main(String args[]){
MyThread mt = new MyThread() ; // 定义线程对象
new Thread(mt).start();
new Thread(mt).start();
new Thread(mt).start();
}
}; |