有关while(true)的疑惑

tg008007x3 2010-05-24 10:55:20
while(true)
{
System.out.println("kkkkkk");
Thread.currentThread().interrupt();
}
主程序中运行以上一段代码时,不断打印kkkk
当我把后面一句改成Thread.currentThread().sleep(10000)的时候为什么仍然要等待10秒后才打印kkkk 的值,
睡眠了难道就不中断当前代码的线程么?中断和睡眠有什么区别,本人感觉都是使线程进入阻塞状态啊它们到底有什么区别啊?

...全文
168 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
smi_ling 2010-05-25
  • 打赏
  • 举报
回复
..............
sxg263 2010-05-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 paullbm 的回复:]
interrupt就是CPU告诉线程你平时态度不太好,我看你不爽,所以你就暂时别干了,什么时候再干,我再告诉你;sleep就是CPU告诉线程说哥们你别太累了,干一次活休息10秒钟,然后再接着干吧,如此反复!
[/Quote]
有趣
tjb1216 2010-05-25
  • 打赏
  • 举报
回复
1楼正解,楼主其他的不用看了
什么鬼哈哈 2010-05-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 paullbm 的回复:]

interrupt就是CPU告诉线程你平时态度不太好,我看你不爽,所以你就暂时别干了,什么时候再干,我再告诉你;sleep就是CPU告诉线程说哥们你别太累了,干一次活休息10秒钟,然后再接着干吧,如此反复!
[/Quote]

这个经典,sleep不释放对象锁
cwjieNo1 2010-05-25
  • 打赏
  • 举报
回复
sleep让程序自动进入睡眠状态, 但它并不释放对象锁,就是如果有Synchronized同步块,其他线程仍然不同访问共享数据。注意该方法要捕获异常
中断是中断当前运行的程序,然后等待被调用,释放对象锁·
龙四 2010-05-25
  • 打赏
  • 举报
回复
楼主没有学过《操作系统》

鉴定完毕
keeya0416 2010-05-25
  • 打赏
  • 举报
回复
sleep是让线程进入等待池 未被打断的情况下时间到了就会自动启动
luiganqian 2010-05-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 paullbm 的回复:]
interrupt就是CPU告诉线程你平时态度不太好,我看你不爽,所以你就暂时别干了,什么时候再干,我再告诉你;sleep就是CPU告诉线程说哥们你别太累了,干一次活休息10秒钟,然后再接着干吧,如此反复!
[/Quote]
通俗易懂 顶
kuruby 2010-05-24
  • 打赏
  • 举报
回复
这是单线程的,sleep已经就是相当于是在执行了。时间到了,就继续执行while。
tg008007x3 2010-05-24
  • 打赏
  • 举报
回复
休息期间 while难道不执行么?
kuruby 2010-05-24
  • 打赏
  • 举报
回复
sleep就是暂时让出CPU而已,时间到了,继续运行。
stop,yield,wait之类的如楼主所想那般。
paullbm 2010-05-24
  • 打赏
  • 举报
回复
interrupt就是CPU告诉线程你平时态度不太好,我看你不爽,所以你就暂时别干了,什么时候再干,我再告诉你;sleep就是CPU告诉线程说哥们你别太累了,干一次活休息10秒钟,然后再接着干吧,如此反复!

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧