实现代码
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63package com.oumuv.ticket; /** * 多线程抢票应用 */ public class TicketModel { public static void main(String[] args) { TicketModel ticketModel = new TicketModel(); Ticket ticket = ticketModel.new Ticket(20);//设置余票数 TicketConsumer ticketConsumer = ticketModel.new TicketConsumer("售票点1", ticket); TicketConsumer ticketConsumer2 = ticketModel.new TicketConsumer("售票点2", ticket); TicketConsumer ticketConsumer3 = ticketModel.new TicketConsumer("售票点3", ticket); new Thread(ticketConsumer).start(); new Thread(ticketConsumer2).start(); new Thread(ticketConsumer3).start(); } /** *余票 */ class Ticket { int num; public Ticket(int num) { this.num = num; } } /** *售票端 */ class TicketConsumer implements Runnable { String name; Ticket ticket; public TicketConsumer(String name, Ticket ticket) { this.name = name; this.ticket = ticket; } @Override public void run() { while (true) { synchronized (ticket) { if (ticket.num > 0) { System.out.println(name + ":您成功购买到一张票,余票剩余" + (--ticket.num)); try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } } else { System.out.println(name + ":余票不足,购买失败"); break; } } } } } }
可能输出的结果
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24售票点1:您成功购买到一张票,余票剩余19 售票点1:您成功购买到一张票,余票剩余18 售票点1:您成功购买到一张票,余票剩余17 售票点1:您成功购买到一张票,余票剩余16 售票点1:您成功购买到一张票,余票剩余15 售票点1:您成功购买到一张票,余票剩余14 售票点1:您成功购买到一张票,余票剩余13 售票点1:您成功购买到一张票,余票剩余12 售票点1:您成功购买到一张票,余票剩余11 售票点1:您成功购买到一张票,余票剩余10 售票点1:您成功购买到一张票,余票剩余9 售票点1:您成功购买到一张票,余票剩余8 售票点1:您成功购买到一张票,余票剩余7 售票点3:您成功购买到一张票,余票剩余6 售票点3:您成功购买到一张票,余票剩余5 售票点3:您成功购买到一张票,余票剩余4 售票点2:您成功购买到一张票,余票剩余3 售票点2:您成功购买到一张票,余票剩余2 售票点2:您成功购买到一张票,余票剩余1 售票点2:您成功购买到一张票,余票剩余0 售票点3:余票不足,购买失败 售票点1:余票不足,购买失败 售票点2:余票不足,购买失败
最后
以上就是淡然电源最近收集整理的关于Java多线程:多线程模拟抢票应用的全部内容,更多相关Java多线程内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复