rpct.net
当前位置:首页 >> slEEp方法与wAit方法 >>

slEEp方法与wAit方法

它们最大本质的区别是:sleep()不释放同步锁,wait()释放同步锁. 还有用法的上的不同是:sleep(milliseconds)可以用时间指定来使他自动醒过来,如果时间不到你只能调用interreput()来强行打断;wait()可以用notify()直接唤起.

sleep(100L)是占用cpu,线程休眠100毫秒,其他进程不能再占用cpu资源,wait(100L)是进入等待池中等待,交出cpu 等系统资源供其他进程使用,在这100毫秒中,该线程可以被其他线程notify,但不同的是其他在等待池中的线程不被notify不会出来,但这个线程 在等待100毫秒后会自动进入就绪队列等待系统分配资源,换句话说,sleep(100)在100毫秒后肯定会运行,但wait在100毫秒后还有等待 os调用分配资源,所以wait100的停止运行时间是不确定的,但至少是100毫秒.

wait是java线程间通信的机制,和notify结合使用.sleep是java中线程主动放弃运行,并挂起一定的时间.

第一种解释:功能差不多,都用来进行线程控制,他们最大本质的区别是:sleep()不释放同步锁,wait()释放同步缩.还有用法的上的不同是:sleep(milliseconds)可以

线程sleep 和wait 的区别:1、这两个方法来自不同的类分别是Thread和Object2、最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法.3、wait,notify和notifyAll只能在同步控制方法或者同步控制块里

import java.util.concurrent.TimeUnit; import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.SwingUtilities; /***sleep是对于当前线程来说的.而wait是对于当前对像的当前线程来说的.*当调用wait阻塞当前线程后,需要在另的线

sleep是让线程指定休眠时间,然后继续工作 wait则是等待,直到有线程通知notify()唤醒他才会重新工作.

sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复.调用sleep不会释放对象锁.wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态.

这两者的施加者是有本质区别的. sleep()是让某个线程暂停运行一段时间,其控制范围是由当前线程决定,也就是说,在线程里面决定.好比如说,我要做的事情是 "点火->烧水->煮面",而当我点完火之后我不立即烧水,我要休息一段时间再

共同点:1. 他们都是在多线程的环境下,都可以在程序的调用处阻塞指定的毫秒数,并返回.2. wait()和sleep()都可以通过interrupt()方法 打断线程的暂停状态 ,从而使线程立刻抛出InterruptedException.如果线程A希望立即结束线程B

网站首页 | 网站地图
All rights reserved Powered by www.rpct.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com