java卖票_Java中卖票问题

Thread-0线程正在卖第100张票Thread-1线程正在卖第100张票Thread-1线程正在卖第98张票Thread-1线程正在卖第97张票Thread-1线程正在卖第96张票Thread-1线程正在卖第95张票Thread-1线程...

Thread-0线程正在卖第100张票

Thread-1线程正在卖第100张票

Thread-1线程正在卖第98张票

Thread-1线程正在卖第97张票

Thread-1线程正在卖第96张票

Thread-1线程正在卖第95张票

Thread-1线程正在卖第94张票

Thread-1线程正在卖第93张票

Thread-0线程正在卖第99张票

结果只截取了一部分,下面是程序

class A implements Runnable{

public static int tickets=100;

public void run(){

while(true){

if(tickets>0){

System.out.printf("%s线程正在卖第%d张票\n",Thread.currentThread().getName(),tickets);

tickets--;

}

else break;

}

}

}

public class Tickets {

public static void main(String[] args){

A aa1=new A();

Thread t1=new Thread(aa1);

t1.start();

A aa2=new A();

Thread t2=new Thread(aa2);

t2.start();

}

}

对于执行的结果,不明白为什么出现两次100之后,还会出现99,我是这样理解的:当thread0输出100时,还没--,thread1就开始执行,因此会有两个100,但是tickets声明为static了,这两个100总归要减一,这就会导致必定有一个数字不会出现,但是为什么结果是每一个数字都有,而且还和有几个重复的,为什么???

展开

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值