黑马程序员技术交流社区

标题: 为什么synchronized有时放在while外面可以,有时就不可以? [打印本页]

作者: 繁复    时间: 2015-5-25 21:19
标题: 为什么synchronized有时放在while外面可以,有时就不可以?
  1. public void run() {
  2.                 synchronized (obj) {
  3.                         while (true) {
  4.                                 if (min > 0) {
  5.                                         try {
  6.                                                 Thread.sleep(10);
  7.                                         } catch (InterruptedException e) {
  8.                                                 e.printStackTrace();
  9.                                         }
  10.                                         System.out.println(Thread.currentThread().getName() + ":"
  11.                                                         + min--);
  12.                                 } else {
  13.                                         break;
  14.                                 }
  15.                 }
  16.                 }
  17.         }
复制代码


作者: 繁复    时间: 2015-5-25 21:21
就是这段代码,前两天试就不行,必须放在while里面才行,今天偶然一试,这样竟然也好用了,不是一次两次,是一直试都一样,瞬间就蒙了  求大神告诉这是什么情况?什么原理?




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