黑马程序员技术交流社区

标题: 售票例子中,run方法同步代码块里的sleep()有什么作用? [打印本页]

作者: 王利强    时间: 2012-3-14 14:06
标题: 售票例子中,run方法同步代码块里的sleep()有什么作用?
代码在下方
作者: 王利强    时间: 2012-3-14 14:07
代码如下

11.jpg (29.91 KB, 下载次数: 107)

11.jpg

作者: 赵孟恩    时间: 2012-3-14 14:23
当一个线程获得执行权,它执行run()时会获得一个锁,执行到sleep()时当前线程休眠(暂时停止执行xx毫秒),休眠时该线程还拥有着锁,其他线程无法进行
你把sleep时间调大一些效果会很明显的。通过sleep可以对程序有一定的控制,如多长时间循环一次等等
作者: 魏昂    时间: 2012-3-14 14:23
sleep()
在指定的毫秒数内让当前正在执行的线程休眠(暂停执行),此操作受到系统计时器和调度程序精度和准确性的影响。

由于sleep()方法是Thread类的方法,因此它不能改变对象的机锁。所以当在一个Synchronized方法中调用sleep()时,线程虽然休眠了,但是对象的机锁没有被释放,其他线程仍然无法访问这个对象。sleep()方法不需要在同步的代码块中执行。但是sleep()可以通过interrupt()方法打断线程的暂停状态,从而使线程立刻抛出InterruptedException




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