社区
Java SE
帖子详情
[多线程]关于Thread.sleep抛出的异常
jkleeo
2009-10-30 11:06:29
我是这么理解的,不知道对不对,请高手来看下啦:)
try {
Thread.sleep(1000);
} catch (InterruptedException e) { //我感觉这个异常的含义是
//想睡没睡成,正要躺下的时候,枕头被人拿走了
//一旦睡成了,是不会抛出异常的,因为线程被阻塞了
e.printStackTrace();
}
...全文
988
8
打赏
收藏
[多线程]关于Thread.sleep抛出的异常
我是这么理解的,不知道对不对,请高手来看下啦:) try { Thread.sleep(1000); } catch (InterruptedException e) { //我感觉这个异常的含义是 //想睡没睡成,正要躺下的时候,枕头被人拿走了 //一旦睡成了,是不会抛出异常的,因为线程被阻塞了 e.printStackTrace(); }
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jkleeo
2009-11-06
打赏
举报
回复
[Quote=引用 4 楼 garl2011 的回复:]
你可以理解成本来打算睡10个小时的,结果睡了5个小时被叫醒了。
事实上很多程序都是通过抛出 InterruptedException 来让线程终止执行的。
thread.interrupt()的动作就是抛出该exception。
[/Quote]
这个有问题吧?线程既然已经睡了,就不再占用CPU了,也就无所谓阻塞了吧?
还有一个问题了:既然已经睡了,那么到底是谁叫醒的呢?
loveofmylife
2009-10-30
打赏
举报
回复
理解是不对的,sleep的阻塞是可以被打断的,而i/o和synchronize的阻塞是不能被interrupt()的
只能用这种捕捉异常的方式来打断执行的线程
gordonkkk
2009-10-30
打赏
举报
回复
我认为不能这么理解
没抛异常说明睡的很正常,抛异常说明中途被叫醒了。
这里异常其实不是真正意义上的“不正常的状态”,而是把异常用来控制流程了。
stamp80
2009-10-30
打赏
举报
回复
可以这么理解。我认为确切说应该是sleep没有睡足指定的时间
Henry..D
2009-10-30
打赏
举报
回复
当你的但前线程被阻塞了的话,这是调用sleep()方法则回报该异常的。
yekai012
2009-10-30
打赏
举报
回复
这个是java系统中唯一一个不是异常的异常。
wsywl
2009-10-30
打赏
举报
回复
学习一下。
garl2011
2009-10-30
打赏
举报
回复
你可以理解成本来打算睡10个小时的,结果睡了5个小时被叫醒了。
事实上很多程序都是通过抛出 InterruptedException 来让线程终止执行的。
thread.interrupt()的动作就是抛出该exception。
java线程
sleep
方法
抛出
异常
处理
本文深入解析
Thread
.
sleep
()方法为何
抛出
InterruptedException这一受检
异常
,强调其在
多线程
中断协作中的关键作用;说明重写run()方法时无法throws该
异常
的技术约束,并系统对比受检
异常
与非受检
异常
的编译检查规则、处理方式及典型代表,涵盖InterruptedException、IOException等核心IT
异常
类型。
Java--测试
Thread
中的常用方法
本文深入探讨了Java中
Thread
类的
sleep
()方法的正确使用方式。强调了直接调用
sleep
()方法将
抛出
异常
,需要使用try-catch进行处理,而非通过throws
抛出
,因为这在
Thread
的run()方法中不可行。文章提供了对Java
多线程
编程中关键概念的理解。
JAVA
多线程
(五)Java
多线程
之interrupted线程中断
本文介绍了Java
多线程
中如何使用interrupted方法进行线程中断。当调用线程的interrupt()方法,如果线程在阻塞、等待或定时等待状态,会
抛出
InterruptedException,提前结束线程,但无法中断I/O和synchronized锁阻塞。通过实例展示了如何在main()中启动并中断线程,使线程在调用
Thread
.
sleep
()时
抛出
异常
并终止。
多线程
面试问题
本文收集了Java线程方面的一些典型问题,包括
多线程
同步、实现
多线程
的方法、
Thread
.start()与
Thread
.run()的区别、
Thread
Local类的使用、
抛出
InvalidMonitorStateException
异常
的原因、
Sleep
()、suspend()和wait()的区别、静态方法上的同步、方法调用的限制、死锁与活锁的定义及避免方法等。
Java程序员面试中的
多线程
问题
本文收集了Java线程方面的一些典型问题,包括
多线程
同步、实现
多线程
的方法、
Thread
.start()与
Thread
.run()的区别、
Thread
Local类的使用、
抛出
InvalidMonitorStateException
异常
的原因、
Sleep
()、suspend()和wait()的区别、静态方法上的同步、方法调用的限制、同步实例方法的使用等。这些问题常被高级工程师问及。
Java SE
62,621
社区成员
307,251
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章