线程中卖票的代码实现。
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
327

被折叠的 条评论
为什么被折叠?



