A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 哈皮哈皮doge 初级黑马   /  2015-8-24 16:55  /  423 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  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. }
复制代码

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马