锁定线程:同步块

 1 package testBlog;
 2 
 3 class MyThread implements Runnable {
 4     private int ticket = 5;
 5 
 6     @Override
 7     public void run() {
 8         int x;
 9         for (x = 0; x < 20; x++) {
10             synchronized (this) {// 同步块
11                 if (ticket > 0) {
12                     try {
13                         Thread.sleep(100);// 休眠1s,模拟延迟
14                     } catch (InterruptedException e) {
15                         e.printStackTrace();
16                     }
17                     System.out.println(Thread.currentThread().getName() + "卖票,票数剩余:" + ticket--);// 票数记得要"后--"
18                 }
19             } // 同步块到此结束.同步块中包括:判断是否有票,和卖票两个操作
20         }
21     }
22 
23 }
24 
25 public class Test {
26     public static void main(String[] args) {
27         MyThread mt = new MyThread();
28         new Thread(mt, "票贩子A").start();
29         new Thread(mt, "票贩子B").start();
30         new Thread(mt, "票贩子C").start();
31 
32     }
33 }

 

posted on 2018-01-04 00:07  三盛乙烯  阅读(94)  评论(0编辑  收藏  举报

导航