永发信息网

java中,用static 变量,实现卖火车票,假如有三个窗口,每个窗口都在卖一辆火车的票, 买的票不能重复!

答案:2  悬赏:50  手机版
解决时间 2021-11-09 08:32
java中,用static 变量,实现卖火车票,假如有三个窗口,每个窗口都在卖一辆火车的票, 买的票不能重复!
最佳答案
public class SaleTicket extends Thread{

static int mark=0;
static int ticket[]=new int [100];
int SaleTicketNo;
SaleTicket(int num){
SaleTicketNo=num;
}

public void run() {
// compute primes larger than minPrime
for(int i=0;i<100;i++)
{
if(ticket[i]==0){
ticket[i]=1;
mark=mark+1;
System.out.println("售票机编号:"+SaleTicketNo+" 票号:"+i+" 张次:"+mark);
}
}
}

}

public class Test {

public static void main(String[] args) {

SaleTicket sale1=new SaleTicket(101);
SaleTicket sale2=new SaleTicket(102);
SaleTicket sale3=new SaleTicket(103);
SaleTicket sale4=new SaleTicket(104);
SaleTicket sale5=new SaleTicket(105);

sale1.start();
sale2.start();
sale3.start();
sale4.start();
sale5.start();

}

}
不考虑死锁问题
全部回答
yiedld这个方法是让当前线程回到可执行状态,以便让具有相同优先级的线程进入执行状态,但不是绝对的。因为虚拟机可能会让该线程重新进入执行状态。
让线程暂时停止可以选择sleep方法。比如Thread.sleep(1000),当前线程睡眠1秒。需要知道的是,1秒后,线程是回到可执行状态,并不是执行状态,什么时候执行那是由虚拟机来决定的。所以sleep(1000)并不是在睡眠1秒后立即执行。

所以么,建议把yield方法改成sleep。

另外,建议把temp放在类外定义。不然的话,会有t1.temp,t2.temp和t3.temp三个量存在,不是同一个量,不行。追问1
2
2
4
5
每次运行结果不一样,最主要是它有些数重复了,
我想始终输出的结果是 1~5 中的不重复结果,而且每个数只输出一遍!追答static private int temp=1;
public class SaleTicket extends Thread{
。。。

把temp 放到类外定义,不然是三个temp,每个都从1到5,自然要打印3遍每个数
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
尿酸334.3,偏高吗,需要注意什么
天窗怎么遥控开启/关闭
2017年几月搬家最好
学园奶爸百度云盘
2016年的房产证是夫妻每人一本吗
和静县街心公园便民警务站地址有知道的么?有
形容女生聪明成语有哪些?
急急急急急!小东参加学校数学知识竞赛,试卷
"同茫茫宇宙相比,地球是渺小的,它是一个半
1190元泰铢等于多少人民币
糕点房要用10千克五仁馅制作一批五仁月饼,做
若羌县阳光便民1号警务站办公地址在什么地方
银行校园招聘网申自我介绍怎么写
k1505次列车行程多少公里
Intel®HDGraphics4400显卡驱动forxp
推荐资讯
股票发行数量和流通盘这两说法有何区别?
一周七天是哪个定的?
前女友很无情,我把她微信删除了,我是不是做
台达 dps-250ab-28j是多大功率?28J是什么意
和田图玛热斯驾驶员培训学校地址有知道的么?
多肉绮罗配什么盆好看
festo有双行程且带锁的气缸吗
馨玺台球厅棋牌室地址在什么地方,我要处理点
动植物的开放时间(至少五个)
深圳307路车经过那
宜城市襄樊宜城市住房制度改革委员会资金管理
怀孕三个月吃小米辣蘸水煮青菜可以吗?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?