java并发编程之Thread和Runnable之实例应用(三)

1.Thread版买票:

class MyThread extends Thread{  
    
    private int ticket = 10;  
    private String name;  
    public MyThread(String name){  
        this.name =name;  
    }  
    public void run(){  
        for(int i =0;i<500;i++){  
            if(this.ticket>0){  
                System.out.println(this.name+"卖票---->"+(this.ticket--));  
            }  
        }  
    }  
}

public class ThreadDemo {

    public static void main(String[] args) {  
        MyThread mt1= new MyThread("一号窗口");  
        MyThread mt2= new MyThread("二号窗口");  
        MyThread mt3= new MyThread("三号窗口");  
        mt1.start();  
        mt2.start();  
        mt3.start();  
    }
    
}
结果:

1.Runnable版买票:

public class MyRunnable implements Runnable{  
    private int ticket =10;  
    private String name;  
    public void run(){  
        for(int i =0;i<500;i++){  
            if(this.ticket>0){  
                System.out.println(Thread.currentThread().getName()+"卖票---->"+(this.ticket--));  
            }  
        }  
    }  
}

public class RunnableDemo {

	public static void main(String[] args) {  
         // TODO Auto-generated method stub  
         //设计三个线程  
         MyRunnable mt = new MyRunnable();  
         Thread t1 = new Thread(mt,"一号窗口");  
         Thread t2 = new Thread(mt,"二号窗口");  
         Thread t3 = new Thread(mt,"三号窗口");  
         t1.start();  
         t2.start();  
         t3.start();  
    }
	
}
结果:【 显示的结果次数多了其实会有问题的,这里其实是需要加入同步操作(即互斥锁)来保持线程操作的原子性,这后面在说。

结论:

1)Thread版是多个线程分别完成自己的任务。

2)Runnable版是多个线程共同完成一个任务。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值