Java中wait、sleep、yield方法的区别
2023-09-11 14:16:37 时间
wait和sleep的区别
相同:
1.执行Sleep()方法和Waiting()方法都会释放运行权,即让出CPU
2.执行Sleep()方法和Waiting()方法都会让当前线程进入阻塞状态
不同点:
1.wait只能在同步(synchronize)环境中被调用,而sleep没这个限制。
2.进入wait状态的线程能够被notify和notifyAll线程唤醒,但是进入sleeping状态的线程不能被notify方法唤醒,sleep()方法可以使用interrupt()方法将休眠的线程唤醒。
3.wait通常有条件地执行,线程会一直处于wait状态,直到某个条件变为真。但是sleep仅仅让你的线程进入睡眠状态。
4.wait方法在进入wait状态的时候会释放对象的锁,但是sleep方法不会。
5.wait方法是针对一个被同步代码块加锁的对象,而sleep是针对一个线程。
6.sleep()方法属于Thread类的静态方法,而waiting()方法Object类的实例方法。
yield和sleep的区别
1.sleep方法会给其他线程运行的机会,而不考虑其他线程的优先级,因此会给较低优先级的一个运行的机会,yield方法只会给相同优先级或者更高优先级的线程一个运行的机会。
2.当线程执行了sleep方法后,将转到阻塞状态,参数millis指定睡眠时间,当线程执行yield方法后,将转到就绪状态。
3.sleep方法声明抛出InterruptedException异常,而yield方法没有声明抛出任何异常。
4.sleep方法比yield方法具有更好的可移植性,不能领先yield()方法来提高程序的并发性能。
相关文章
- JAVA-----乱码的处理 乱码的解决方法总结
- Java常用类库--国际化程序
- 使用java中的String类操作复杂的字符串
- java 调用webservice的各种方法总结
- java 中文乱码的解决方法
- Java中StringBuffer类的常用方法
- Java实现 泊松分酒
- Java中BigDecimal类的常用方法
- Java实现 蓝桥杯VIP 算法训练 快速排序
- 【Java】java使用反射访问对象方法和成员变量
- Java多线程--synchronized修饰普通方法和修饰静态方法的区别
- Atitit 方法运行器methodRunnerV3 方法虚拟机 vm 新特性 java -cp C:0wkspcmethodRunnerbin -Djava.ext.dirs="
- Atitit 表达式原理 语法分析 原理与实践 解析java的dsl 递归下降是现阶段主流的语法分析方法
- paip.java OutOfMemoryError 解决方法o33
- java - 集成了请求方法的好用依赖与简单使用
- 一行代码, Java 怎样把List 转成 Map 的方法( Java 8 中的Stream API )
- Java的起源和发展
- java thread 线程40个问题汇总
- java 静态方法和实例方法的区别
- Java构造器和方法的区别
- Java.io下的方法是对磁盘上的文件进行磁盘操作
- Java中next()方法与nextLine()的区别
- Java内存模型和线程安全
- JAVA操作Excel表格:方法一:jxl的使用②:Excel实战之JXL解析读取excel文件
- 【java】Java并发编程系列- volatile关键字(高并发中特实用哦)