java thread 线程_java中Thread线程问题

如程序1所示,本人简单的模拟四个人同时售卖车票的情况,并统计每个人买的几号票.车票共10张,一开始本人未设置任何延迟时间,所以看上去所有的票几乎是一瞬间卖完,为了提高真实性,我加入...

如程序1所示,本人简单的模拟四个人同时售卖车票的情况,并统计每个人买的几号票.车票共10张,一开始本人未设置任何延迟时间,所以看上去所有的票几乎是一瞬间卖完,为了提高真实性,我加入一个随机数来做延迟时间,如程序2,但这时就发生了一个很有意思的现象,竟然有人卖出负号票,怎么回事?望大神详解

import java.util.*;

import java.text.*;

class Demo

{

public static void main(String[] args)

{

SaleMan s0 = new SaleMan();

s0.setName("张三");

SaleMan s1 = new SaleMan();

s1.setName("李四");

SaleMan s2 = new SaleMan();

s2.setName("王五");

SaleMan s3 = new SaleMan();

s3.setName("赵六");

s0.start();

s1.start();

s2.start();

s3.start();

}

}

class SaleMan extends Thread

{

private static int tickit = 10;

int num = 0;

Random rd = new Random();

long time = 0;

public void run() {

while(tickit>0){

num++;

System.out.println(this.getName()+"\ttickitNumber:"+(tickit--));

}

}

}

程序2:在run()方法中加入

try{

time = rd.nextInt(1000);

sleep(time);

}catch(InterruptedException e){

System.out.println("打断异常");

}

结果1:

结果2:

顺便补充一下,本人并不是做一个订票或者卖票系统,这样说只是希望大家能快速理解我的程序和思路.谢谢

展开

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值