黑马程序员技术交流社区

标题: synchronized实现卖票程序 [打印本页]

作者: 哈皮哈皮doge    时间: 2015-8-24 16:55
标题: synchronized实现卖票程序
  1. /*
  2. * 4个窗口卖100张票
  3. */
  4. public class TestBuyTickets {
  5.         public static void main(String[] args){
  6.         BuyTickets bt = new BuyTickets();
  7.         //定义4个线程对象
  8.         Thread t1 = new Thread(bt);
  9.         Thread t2 = new Thread(bt);
  10.         Thread t3 = new Thread(bt);
  11.         Thread t4 = new Thread(bt);
  12.         t1.start();
  13.         t2.start();
  14.         t3.start();
  15.         t4.start();
  16.         }
  17. }
  18. class BuyTickets implements Runnable{
  19.     private int tickets = 100;//定义100张票
  20.     private String str = new String("123");//定义一个对象
  21.         @Override
  22.         public void run() {
  23.                 while(true){
  24.                         //synchronized关键字可应用在方法级别(粗粒度锁)或者是代码块级别(细粒度锁)。
  25.                         //在Java语言中,每一个对象有一把锁。线程可以使用synchronized关键字来获取对象上的锁,只有获取锁的线程才能执行同步代码块中的内容。
  26.                         synchronized (str) {
  27.                                 if(tickets>0){
  28.                                         System.out.println(Thread.currentThread().getName()+":"+tickets);
  29.                                         this.tickets--;
  30.                                 }else{
  31.                                         break;
  32.                                 }
  33.                         }
  34.                
  35.                 }
  36.         }
  37. }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2