黑马程序员技术交流社区

标题: 关于多线程同步代码块的问题 [打印本页]

作者: hbcoding    时间: 2015-11-18 11:23
标题: 关于多线程同步代码块的问题
在学习毕向东老师的视频中,有如下买票的例子:

  1. class Ticket implements Runnable{
  2.         private int tick = 500;
  3.         Object o = new Object();
  4.         boolean flag = true;
  5.         public void run(){
  6.                
  7.                 while(true){
  8.                         synchronized(o){
  9.                   if(tick>0)
  10.                         System.out.println(Thread.currentThread().getName()+"one---"+tick--);
  11.                         }
  12.                 }
  13.                
  14.                
  15.                
  16.         }       
  17. }
  18. public class TicketDemo2{
  19.         public static void main(String[] args){
  20.                 Ticket t = new Ticket();
  21.                 Thread t1 = new Thread(t);       
  22.                 Thread t2 = new Thread(t);
  23.                 Thread t3 = new Thread(t);
  24.                 Thread t4 = new Thread(t);
  25.                 t1.start();
  26.                 t2.start();
  27.                 t3.start();
  28.                 t4.start();
  29.         }
  30. }
复制代码

上面例子中的票数tick的值为什么最大只能是299,如果设置的值大于299,运行的时候也会从299开始递减。上例程序运行结果如下图:
J:\hh.png
作者: 耀阳圣尊    时间: 2015-11-18 16:43
图片没有上传成功




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