java中wait 和 sleep 区别
来源:互联网 发布:mac版百度云好友分享 编辑:程序博客网 时间:2024/05/22 03:25
1,wait可以指定时间也可以不指定。
sleep必须指定时间。
2,在同步中时,对cpu的执行权和锁的处理不同。
wait:释放执行权,释放锁。
这与第一个例子正好相反,她永远都不会出现成双成对的情况
sleep必须指定时间。
2,在同步中时,对cpu的执行权和锁的处理不同。
wait:释放执行权,释放锁。
sleep:释放执行权,不释放锁。
那抹举个例子说明,相信大家会很快明白:
public class Test1 {public static void main(String[] args) {MyThread m1 = new MyThread("线程1");MyThread m2 = new MyThread("线程2");m2.start();m1.start();}}class MyThread extends Thread {String name;public MyThread(String name) {this.name = name;}@Overridepublic void run() {synchronized (Test1.class) {try {System.out.println(name);sleep(5000);System.out.println(name);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}
她的输出结果永远都是成双成对出现;
比如:
线程2
线程2
线程1
线程1;
而永远不会出现
线程1
线程2。。。
因为两个线程用的是同一个锁,
而sleep是不会释放锁的;
下面来看第二个例子
public class Test1 {public static void main(String[] args) {MyThread m1 = new MyThread("线程1");MyThread1 m2 = new MyThread1("线程2");m2.start();m1.start();}}class MyThread extends Thread {String name;public MyThread(String name) {this.name = name;}@Overridepublic void run() {synchronized (Test1.class) {System.out.println(name);try {Test1.class.wait();} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}System.out.println(name);}}}class MyThread1 extends Thread {String name;public MyThread1(String name) {this.name = name;}@Overridepublic void run() {synchronized (Test1.class) {System.out.println(name);try {Test1.class.wait();} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}System.out.println(name);}}}
这与第一个例子正好相反,她永远都不会出现成双成对的情况
这是由于,wait会释放锁
0 0
- Java中sleep和wait的区别
- Java中sleep和wait的区别
- java中wait和sleep的区别
- Java中sleep和wait的区别
- java线程中wait()和sleep()区别
- Java中sleep和wait的区别
- java中sleep()和wait()的区别
- Java中sleep和wait的区别
- Java中sleep()和wait()的区别
- java中sleep()和wait()的区别?
- Java中sleep()和wait()的区别
- java中wait和sleep的区别
- java中wait 和 sleep 区别
- java中sleep()和wait()的区别
- java中sleep和wait区别
- java中sleep和wait的区别
- Java中wait和sleep区别
- Java中sleep和wait的区别
- Swift与Objective-C
- 我的新书《编程之法:面试和算法心得》终于上市 [内含勘误]
- MongDB shell 命令
- Windows共享文件夹的相关服务要启动
- OkHttp资料推荐 和 下载进度监听开源
- java中wait 和 sleep 区别
- 【Advanced SQL-1 】大连理工软件学院_数据库第四次上机答案
- x&(x-1)作用
- 【转】QPushButton的背景图片和文字同时显示
- Hibernate配置文件hibernate.cfg.xml中配置信息详解
- hicharts 每次显示一个图例的数据
- 自学第二天(2)
- java Compare
- [置顶] Android 界面滑动实现---Scroller类 从源码和开发文档中学习(让你的布局动起来)