package
ticktester;
03 | private
int ticketCount; |
05 | public
Ticket( int ticketCount){ |
06 | this .ticketCount = ticketCount; |
09 | public
synchronized void withBuyTicket( int amount){ |
10 | int
currentTicketAmount = ticketCount; |
12 | System.out.println( "\n目前票数:" +currentTicketAmount); |
13 | if (currentTicketAmount== 0 ) |
15 | System.out.println( "票已全部售出!" ); |
18 | if (amount>currentTicketAmount) |
20 | System.out.println( "需售出票数: " +amount+ " 剩下票数为: " +currentTicketAmount+ "
剩余票数不足 !" ); |
24 | currentTicketAmount = currentTicketAmount-amount; |
25 | System.out.println( "售出票数:" +amount+ " 剩余票数: " +currentTicketAmount); |
26 | ticketCount = currentTicketAmount; |
31 | class BuyTicket implements Runnable{ |
35 | public
BuyTicket(Ticket t, int amount){ |
42 | Thread.sleep((( int )(Math.random()* 10000 ))); |
43 | }
catch (InterruptedException e) { |
46 | t.withBuyTicket(amount); |
50 | public class
TickTester { |
55 | public
static void main(String[] args) { |
56 | // TODO Auto-generated method stub |
57 | Ticket t = new Ticket( 10 ); |
58 | BuyTicket a1 = new BuyTicket(t, 2 ); |
59 | BuyTicket a2 = new BuyTicket(t, 2 ); |
60 | BuyTicket a3 = new BuyTicket(t, 1 ); |
61 | BuyTicket a4 = new BuyTicket(t, 1 ); |
62 | BuyTicket a5 = new BuyTicket(t, 2 ); |
63 | BuyTicket a6 = new BuyTicket(t, 3 ); |
64 | Thread tk1 = new Thread(a1); |
65 | Thread tk2 = new Thread(a2); |
66 | Thread tk3 = new Thread(a3); |
67 | Thread tk4 = new Thread(a4); |
68 | Thread tk5 = new Thread(a5); |
69 | Thread tk6 = new Thread(a6); |
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理