zoukankan      html  css  js  c++  java
  • java笔记线程两种方式模拟电影院卖票

     1 public class SellTicketDemo {
     2     public static void main(String[] args) {
     3         // 创建三个线程对象
     4         SellTicket st1 = new SellTicket();
     5         SellTicket st2 = new SellTicket();
     6         SellTicket st3 = new SellTicket();
     7 
     8         // 给线程对象起名字
     9         st1.setName("窗口1");
    10         st2.setName("窗口2");
    11         st3.setName("窗口3");
    12 
    13         // 启动线程
    14         st1.start();
    15         st2.start();
    16         st3.start();
    17     }
    18 }
    19 public class SellTicket extends Thread {
    20 
    21     // 定义100张票
    22     // private int tickets = 100;
    23     // 为了让多个线程对象共享这100张票,我们其实应该用静态修饰
    24     private static int tickets = 100;
    25 
    26     @Override
    27     public void run() {
    28         // 定义100张票
    29         // 每个线程进来都会走这里,这样的话,每个线程对象相当于买的是自己的那100张票,这不合理,所以应该定义到外面
    30         // int tickets = 100;
    31 
    32         // 是为了模拟一直有票
    33         while (true) {
    34             if (tickets > 0) {
    35                 System.out.println(getName() + "正在出售第" + (tickets--) + "张票");
    36             }
    37         }
    38     }
    39 }
     1 public class SellTicketDemo {
     2     public static void main(String[] args) {
     3         // 创建资源对象
     4         SellTicket st = new SellTicket();
     5 
     6         // 创建三个线程对象
     7         Thread t1 = new Thread(st, "窗口1");
     8         Thread t2 = new Thread(st, "窗口2");
     9         Thread t3 = new Thread(st, "窗口3");
    10 
    11         // 启动线程
    12         t1.start();
    13         t2.start();
    14         t3.start();
    15     }
    16 }
    17 public class SellTicket implements Runnable {
    18     // 定义100张票
    19     private int tickets = 100;
    20 
    21     @Override
    22     public void run() {
    23         while (true) {
    24             if (tickets > 0) {
    25                 System.out.println(Thread.currentThread().getName() + "正在出售第"
    26                         + (tickets--) + "张票");
    27             }
    28         }
    29     }
    30 }


    这样的两种方式运行结果都会有问题 负数的票。。。。->>>>

  • 相关阅读:
    【2020省选模拟】01.18比赛总结
    【2020省选模拟】01.17比赛总结
    利用dockerfile 安装一个tomcat7
    docker的基本安装和命令详解
    jumpserver1.4.1 安装过程
    Redis info参数总结
    ansible-service
    ansible-yum
    centos源码安装mariadb和Galera 多主集群
    ansible常用模块
  • 原文地址:https://www.cnblogs.com/lanjianhappy/p/6384018.html
Copyright © 2011-2022 走看看