@chenxuxiong
2016-05-27T07:35:44.000000Z
字数 641
阅读 807
wait()和sleep()的区别,start,run
JAVA基础
第一种解释
- 1.wait是Object的方法,sleep是Thread的方法
- 2.sleep()不释放同步锁,而wait()释放同步锁
- 相当于sleep指线程被调用时,占着CPU不工作,系统的CPU部分资源被占用,其他线程无法进入,会增加时间限制。
- wait指线程处于进入等待状态,形象地说明为“等待使用CPU”,此时线程不占用任何资源,不增加时间限制。
- 3.sleep(milliseconds)可以用时间指定来使他自动醒过来,如果时间不到你只能调用interreput()来强行打断;
而wait()可以用notify()直接唤起。
wait可以用来线程通信,而sleep只是让线程停止一段时间。
第二种解释
- sleep是Thread类的静态方法。sleep的作用是让线程休眠指定的时间,在时间到达时恢复,也就是说sleep将在接到时间到达事件事恢复线程执行
- wait是Object的方法,也就是说可以对任意一个对象调用wait方法,调用wait方法将会将调用者的线程挂起,直到其他线程调用同一个对象的notify方法才会重新激活调用者,
Thread 类中的start() 和 run() 方法有什么区别?
start()方法被用来启动新创建的线程,而且start()内部调用了run()方法,这和直接调用run()方法的效果不一样。当你调用run()方法的时候,只会是在原来的线程中调用,没有新的线程启动,start()方法才会启动新线程。