黑马程序员技术交流社区

标题: 为什么用了sleep在线程中结果可能发生改变 [打印本页]

作者: 不安分的程序猿    时间: 2016-5-17 23:26
标题: 为什么用了sleep在线程中结果可能发生改变
  1.         private int ticket = 100;
  2.         @Override
  3.         public void run() {
  4.                         while (true) {
  5.                                 synchronized ("lock") {
  6.                                 if (ticket > 0) {
  7.                                         try {
  8.                                                 Thread.sleep(50);
  9.                                         } catch (InterruptedException e) {
  10.                                                 // TODO Auto-generated catch block
  11.                                                 e.printStackTrace();
  12.                                         }
  13.                                         System.out.println(Thread.currentThread().getName()
  14.                                                         + "正在卖剩余的最后" + ticket-- + "张票");
  15.                                 }
  16.                         }
  17.                 }
复制代码


在模拟售票窗口时 加了sleep和不加sleep结果有不小的差异
但是sleep也是相对时间一起执行,为何会有差异
作者: 代码是什么    时间: 2016-5-17 23:50
这个是CPU的,跟睡眠没关系.
作者: 我有上将潘凤    时间: 2016-5-17 23:56
没什么差异啊,除了睡觉的多了几个负数




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