(售票)线程小练习

 1 package com.ccp.Lc0814;
 2 
 3 public class Ticket {
 4     char c;//用户
 5     boolean is=false;
 6     public synchronized void ticket1(char c) throws InterruptedException {
 7         if (is){
 8             System.out.println("有票了,快抢票。。。");
 9             wait();
10         }
11         this.c=c;
12         is=true;
13         System.out.println("马上去抢票,快跑!!!next"+this.c);
14         notify();
15     }
16     public synchronized char ticket2() throws InterruptedException {
17         if (!is){
18             System.out.println("看看余票还有没有。。。");
19             wait();
20         }
21         System.out.println("抢到了,Happly!!!"+c);
22         is=false;
23         notify();
24         return c;
25     }
26 }
27 ———————————————————————————————————————
28 package com.ccp.Lc0814;
29 
30 public class TicketConsumer implements Runnable{
31 Ticket ticket;
32 
33     public TicketConsumer(Ticket ticket) {
34         this.ticket=ticket;
35     }
36 
37     public TicketConsumer() {
38     }
39 
40     @Override
41     public void run() {
42         char c='A';
43         do {
44         try {
45             Thread.sleep(1000);
46             c=ticket.ticket2();
47         } catch (InterruptedException e) {
48             e.printStackTrace();
49         }
50         }while (c!='D');
51     }
52 }
53 ————————————————————————————————————————
54 package com.ccp.Lc0814;
55 
56 public class TicketProducer implements Runnable{
57     Ticket ticket;
58 
59     public TicketProducer() {
60     }
61 
62     public TicketProducer(Ticket ticket) {
63         this.ticket=ticket;
64     }
65 
66     @Override
67     public void run() {
68         for (char c='A'; c<='D'; c++) {
69             try {
70                 Thread.sleep(1000);
71                 ticket.ticket1(c);
72             } catch (InterruptedException e) {
73                 e.printStackTrace();
74             }
75         }
76     }
77 }
78 ————————————————————————————————————————
79 package com.ccp.Lc0814;
80 
81 public class TicketStart {
82     public static void main(String[] args) {
83         Ticket ticket=new Ticket();
84         TicketConsumer ticketConsumer=new TicketConsumer(ticket);
85         TicketProducer ticketProducer=new TicketProducer(ticket);
86         Thread thread1=new Thread(ticketConsumer);
87         Thread thread2=new Thread(ticketProducer);
88         thread1.start();
89         thread2.start();
90     }
91 
92 
93 }

 

转载于:https://www.cnblogs.com/qsy0021/p/11361635.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值