社区
Java SE
帖子详情
有关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
打赏
收藏
有关while(true)的疑惑
while(true) { System.out.println("kkkkkk"); Thread.currentThread().interrupt(); } 主程序中运行以上一段代码时,不断打印kkkk 当我把后面一句改成Thread.currentThread().sleep(10000)的时候为什么仍然要等待10秒后才打印kkkk的值, 睡眠了难道就不中断当前代码的线程么?中断和睡眠有什么区别,本人感觉都是使线程进入阻塞状态啊它们到底有什么区别啊?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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秒钟,然后再接着干吧,如此反复!
ScheduledExecutorService和while(
true
) sleep 两种定时方式的定时间隔准确度比较
为什么会有这篇博客呢?因为最近朋友新入职了一家公司,公司要求他对现有的代码进行优化,其中就涉及到了定时任务。原有的方式是while(
true
) sleep,而我朋友找到了另外一种定时方式,即ScheduledExecutorService。他很
疑惑
,不知道原有的while(
true
) sleep的方式定时间隔准确度好,还是他现在找的ScheduledExecutorService这种方式定时间隔准确度好。这时他找到了我,让我帮他解答这个问题,于是就有了这篇博客。 我们分别编写while(
true
) slee
Java开发者们for(;;)和while(
true
)的区别应该了解下
在我们阅读源码的时候经常会看到源码中会有下面这样的代码,当我看到这段代码自然而然就明白,这不就是一个无线循环吗? 为什么不使用while呢?我们不禁疑问?那么带着这样的疑问,我们来探索一下吧 ! for(;;)和while(
true
)区别 从寓意上来看,两种写法都是无限循环 从效率上看,while(
true
)每次循环要判断循环条件,for(;;)循环没有判断,理论上...
关于Python的布尔值为False的数据情况、Python while
True
再联系结合C语言的无限循环逻辑的
疑惑
解(何时为
True
或False的
疑惑
小帮助)
Python中常见的布尔值为False的数据如下: (1)None (2)任何空序列,如''''、()、[] (3)空字典,如{} (4)False(布尔本身) (5)任何数字类型的0,如0、0.0、0j Python中可以是使用bool()函数检测数据的布尔值
for 循环嵌套 while 的神奇问题
在Xcode7中写了一段OC代码,在一个for循环中嵌套了一个while循环。因为for循环中有一个异步执行,我想等异步执行完,再执行下一个for循环,所以用while循环做了一个等待。 代码如下: BOOL flag = NO; for (id obj in array) { // 执行异步方法, 执行完后设置flag=YES; ...... while(
true
)
rust实战系列二十三:while
因为编译器会觉得while语句的执行跟条件表达式在运行阶段的值有关,因此它 不确定x是否一定会初始化,于是它决定给出一个错误:use of possibly uninitialized variable,也就是说变量x可能没有初始化。loop和while
true
语句在运行时没有什么区别,它们主要是会影响编译器内 部的静态分析结果。看到这里,读者可能会产生
疑惑
:loop{}和while
true
{}循环有什么区别,为什 么Rust专门设计了一个死循环,loop语句难道不是完全多余的吗?
Java SE
62,614
社区成员
307,327
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章