sleep、yield、wait、join的区别
2016-05-16 23:20
435 查看
1.sleep:Thread类的方法,必须带一个时间参数。会让当前线程休眠进入阻塞状态并释放CPU,提供其他线程运行的机会且不考虑优先级,但如果有同步锁则sleep不会释放锁即其他线程无法获得同步锁
2.yield:Thread类的方法,类似sleep但无法指定时间并且只会提供相同或更高优先级的线程运行的机会,不推荐使用
3.wait:Object类的方法,必须放在循环体和同步代码块中,执行该方法的线程会释放锁,进入线程等待池中等待被再次唤醒(notify随机唤醒,notifyAll全部唤醒,线程结束自动唤醒)即放入锁池中竞争同步锁
4.join:一种特殊的wait,当前运行线程调用另一个线程的join方法,当前线程进入阻塞状态直到另一个线程运行结束
2.yield:Thread类的方法,类似sleep但无法指定时间并且只会提供相同或更高优先级的线程运行的机会,不推荐使用
3.wait:Object类的方法,必须放在循环体和同步代码块中,执行该方法的线程会释放锁,进入线程等待池中等待被再次唤醒(notify随机唤醒,notifyAll全部唤醒,线程结束自动唤醒)即放入锁池中竞争同步锁
4.join:一种特殊的wait,当前运行线程调用另一个线程的join方法,当前线程进入阻塞状态直到另一个线程运行结束
相关文章推荐
- Spirng+In+Action(Craig Walls Ryan Breidenbach)
- CodeForces 608A Saitama Destroys Hotel(水题)
- 服务器主板s2600cp2配置Raid5全过程
- No TypeTag available for person
- Rails安全检测工具之Brakeman介绍
- mdadm实现对raid1阵列的管理
- Syntax error, parameterized types are only available if source level is 1.5 解决方案
- Waiting for Light
- int main( int argc ,char** argv) windows下如何传递参数
- 关于retain,assign,copy,strong,weak的见解
- bullet物理引擎btBvhTriangleMeshShape,btHeightfieldTerrainShape的使用
- ADB Server Didn’t ACK ,failed to Start Daemon 解决方法
- Validation failed for one or more entities. See 'EntityValidationErrors' property for more details.
- Hdu-1867 A + B for you again
- 第一个游戏动作开发日志——敌人初步AI设定
- Failed to execute 'texImage2D' on 'WebGLRenderingContext
- VMware卸载出现“the msi failed”解决办法
- Thread类的sleep()方法和对象的wait()方法都可以让线程暂停执行,它们有什么区别?
- 备忘录AIX主机下用SHELL脚本编写FTP传某个目录下的文件到LINUX主机
- Failed to install *.apk on device *: timeout