线程安全

package com.ajax;
//线程安全
public class Example07 {
	public static void main(String[] args){
		SaleThread saleThread=new SaleThread();
		new Thread(saleThread,"线程一").start();
		new Thread(saleThread,"线程二").start();
		new Thread(saleThread,"线程三").start();
		new Thread(saleThread,"线程四").start();
	}
}
class SaleThread implements Runnable{
	private int tickets=10;
	public void run(){
		while(tickets>0){
			try{
				Thread.sleep(10);
			}catch(InterruptedException e){
				e.printStackTrace();
			}
			System.out.println(Thread.currentThread().getName()+"---卖出的票"+tickets--);
		}
	}
}
/*运行结果:
线程四---卖出的票9
线程一---卖出的票10
线程二---卖出的票8
线程三---卖出的票7
线程四---卖出的票6
线程一---卖出的票5
线程三---卖出的票4
线程二---卖出的票4
线程一---卖出的票3
线程四---卖出的票2
线程三---卖出的票1
线程二---卖出的票0
线程四---卖出的票-1
线程一---卖出的票-2
解释:
假设线程一此时出售1号票,对票号进行判断后,进入while循环,在售票之前通过sleep方法让线程休眠,这时候线程二进行售票,相当于线程二会进行售票,由于此时票号仍为
1,因此线程二也会进入循环,同理,四个线程都会进入while循环,休眠结束后,四个线程都会进行售票,这样就相当于将票号减了四次,结果中出现了0,-1,-2这样的票号*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值