首页 > 代码库 > 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 }
这样的两种方式运行结果都会有问题 负数的票。。。。->>>>
java笔记线程两种方式模拟电影院卖票
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。