多线程不用Sleep有什么区别

 我来答
俱怀逸兴壮思飞欲上青天揽明月
2015-08-06 · TA获得超过12.9万个赞
知道大有可为答主
回答量:1.4万
采纳率:78%
帮助的人:2909万
展开全部
多线程不用sleep,和用sleep的区别在于:
1、这两个方法来自不同的类分别是Thread和Object
2、最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。
3、wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用(使用范围)
4、sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常

java 线程中的sleep和wait有一个共同作用,停止当前线程任务运行,但他们存在一定的不同,首先我们先看sleep中的构造函数
  sleep(long millis) Causes the currently executing thread to sleep (temporarily cease execution) for the specified number of milliseconds, subject to the precision and accuracy of system timers and schedulers.
  sleep(long millis, int nanos) Causes the currently executing thread to sleep (cease execution) for the specified number of milliseconds plus the specified number of nanoseconds, subject to the precision and accuracy of system timers and schedulers.
  sleep方法属于Thread类中方法,表示让一个线程进入睡眠状态,等待一定的时间之后,自动醒来进入到可运行状态,不会马上进入运行状态,因为线程调度机制恢复线程的运行也需要时间,一个线程对象调用了sleep方法之后,并不会释放他所持有的所有对象锁,所以也就不会影响其他进程对象的运行。但在sleep的过程中过程中有可能被其他对象调用它的interrupt(),产生InterruptedException异常,如果你的程序不捕获这个异常,线程就会异常终止,进入TERMINATED状态,如果你的程序捕获了这个异常,那么程序就会继续执行catch语句块(可能还有finally语句块)以及以后的代码。
  注意sleep()方法是一个静态方法,也就是说他只对当前对象有效,通过t.sleep()让t对象进入sleep,这样的做法是错误的,它只会是使当前线程被sleep 而不是t线程
咖喱小西瓜
2012-02-27 · TA获得超过186个赞
知道小有建树答主
回答量:171
采纳率:0%
帮助的人:202万
展开全部
你的意思是不是多线程中,用sleep和不用有什么区别?
其实没什么区别,
sleep只是用于线程睡眠的函数,
相当于暂停功能,
线程暂停多久再执行这个意思,
相应时间后线程会继续进行的.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友4c688e6
2012-02-27 · 超过40用户采纳过TA的回答
知道小有建树答主
回答量:89
采纳率:0%
帮助的人:93.6万
展开全部
Sleep 是主线程休眠
参考msdn
这是Sleep方法 http://msdn.microsoft.com/zh-cn/library/d00bd51t.aspx
这是 join 方法 http://msdn.microsoft.com/zh-cn/library/6b1kkss0.aspx
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式