首页 > 代码库 > Java多线程之分销电影票
Java多线程之分销电影票
代码:
1 public class MainClass { 2 3 public static void main(String[] args) { 4 method1(); 5 } 6 public static void method1() { 7 sellMovie sell = new sellMovie(); 8 9 new Thread(sell, "美團").start(); 10 new Thread(sell, "糯米").start(); 11 } 12 }
1 public class Model { 2 int total = 10; 3 }
1 public class sellMovie implements Runnable { 2 Model model = new Model(); 3 4 @Override 5 public void run() { 6 while (model.total > 0) { 7 synchronized (model) {// 只能鎖引用類型 8 9 if (model.total > 0) { 10 System.out.println("銷售票:" + model.total +" "+Thread.currentThread().getName()); 11 } else { 12 System.out.println("票售完了"); 13 return; 14 } 15 model.total--; 16 } 17 System.out.println("............."); 18 } 19 } 20 }
本例通过实现Runnable接口方法实现多线程,这里是“美团“和“糯米“两个分线程抢票的过程。
由于线程锁只能锁引用类型,所以这里将剩余票数以Model类属性的形式表现出来。
以下是一次输出结果:
銷售票:10 美團
.............
銷售票:9 糯米
.............
銷售票:8 美團
.............
銷售票:7 美團
.............
銷售票:6 糯米
.............
銷售票:5 美團
.............
銷售票:4 糯米
.............
銷售票:3 美團
.............
銷售票:2 美團
.............
銷售票:1 美團
.............
票售完了
Java多线程之分销电影票
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。