课程
/后端开发
/Java
/细说多线程之Thread VS Runnable
窗口2买了一张票还剩:3张票
窗口3买了一张票还剩:2张票
窗口3买了一张票还剩:0张票
窗口1买了一张票还剩:3张票
窗口2买了一张票还剩:1张票
2017-05-23
源自:细说多线程之Thread VS Runnable 2-3
正在回答
也是对的,线程执行顺序是随机的
public void run() { // TODO Auto-generated method stub while(true){ synchronized(lockObj){ if(ticketsNum>0){ ticketsNum--; System.out.println(Thread.currentThread().getName()+"卖出一张票,剩余"+ticketsNum); //Thread.yield(); lockObj.notifyAll(); } } } }
这样改就能按顺序输出了
我懂了 同时运行的 两个线程都在买票
柠檬酱c
多运行几次 偶尔是这个结果:
窗口1买了一张票还剩:4张票
窗口1买了一张票还剩:2张票
窗口1买了一张票还剩:1张票
窗口1买了一张票还剩:0张票
举报
认识Thread和Runnable的区别,以及使用jstack生成线程快照
4 回答这个结果该如何分析呢?有两个剩余票数为2
5 回答那这种情况又该怎么解释?
2 回答打印出六条结果
1 回答打印的结果是乱的,要怎么才能使结果正确显示呢?
4 回答执行结果跟视频完全不一样