stop()与subspend()区别 sleep()与wait()的区别

来源:互联网 发布:windows安装git 编辑:程序博客网 时间:2024/06/05 08:21
反对使用 stop() 因为其不安全,会解除由线程获取的所有锁定,而且对象处于一种不连贯状态,如果其他线程在那种状态下检查和修改他们,很难找出真正的问题  
反对使用subspend(),因为其很容易发生死锁,其虽然会暂停,但是仍然握有锁定的资源,使得其他线程不能访问其锁定的资源,除非等它重新运行,造成死锁(即占着茅坑不拉屎)
应在自己的Thread类中置入一个标志,指出线程应该活动还是挂起。若标志指出线程应该挂起,便用wait()命其进入等待状态。若标志指出线程应当恢复,则用一个notify()重新启动线程。
sleep() 令线程休息会儿,并把机会让给别人
wait()是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。即站在原地等待,直到notify() 提醒,本线程才进入对象锁定池准备获得对象锁进入运行状态
原创粉丝点击