Thread.sleep()与Thread.yield()的区别与联系
来源:互联网 发布:zuk z2 相机软件 编辑:程序博客网 时间:2024/06/10 06:08
在JAVA并发程序的开发中,经常会用到这两个方法对程序进行测试,它们的相同点在于:
1. 都会暂缓执行当前线程;
2. 如果已经持有锁,那么在等待过程中都不会释放锁;
不同点在于:
1. Thread.sleep()可以精确指定休眠的时间,而Thread.yield()依赖于CPU的时间片划分,在我的电脑上大约为20微秒;
2. Thread.sleep()会抛出中断异常,且能被中断,而Thread.yield()不可以;
示例程序如下:
static class YieldLock extends Thread { private Object monitor; /** * @param monitor */ @Inject public YieldLock(Object monitor) { this.monitor = monitor; } public void run() { synchronized (monitor) { while(true) { Thread.yield(); } } }}static class MonitorLock extends Thread { private Object monitor; /** * @param monitor */ @Inject public MonitorLock(Object monitor) { this.monitor = monitor; } public void run() { try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } synchronized (monitor) { System.out.println("我能拿到锁!"); } }}/** * @param args */public static void main(String[] args) { final Object monitor = new Object(); new YieldLock(monitor).start(); // 下面的这个线程永远拿不到锁 // 所以也不会输出"我能拿到锁!"这句话 new MonitorLock(monitor).start();}
阅读全文
0 0
- Thread.sleep()与Thread.yield()的区别与联系
- Thread.yield() 与 Thread.sleep()的区别
- Thread中sleep()与yield()的区别
- Thread.wait()与Thread.yield()的区别
- thread.sleep(0)与thread.sleep(1)的区别
- Thread sleep, yield, wait区别
- thread.sleep 与 implicitlywait 的区别
- Thread.sleep() 和 Thread.yield() 区别
- Thread.sleep() 和 Thread.yield() 区别
- Thread.sleep() 和 Thread.yield() 区别
- Thread.sleep() 和 Thread.yield() 区别
- Thread.sleep() 和 Thread.yield() 区别
- Thread.sleep() 和 Thread.yield() 区别
- SystemClock.sleep()方法与Thread.sleep()方法的区别
- SystemClock.sleep()方法与Thread.sleep()方法的区别
- Thread的wait sleep join yield suspend notify区别
- Thread的wait sleep join yield suspend notify区别
- Thread的wait sleep join yield suspend notify区别收藏
- HDU 5969 最大的位或 —— 贪心 + 二进制的理解
- scala隐士转换
- 【面经笔记】lib dll区别
- 关于python的转义字符
- xcode8.3点击UITextField输入框出现错误信息
- Thread.sleep()与Thread.yield()的区别与联系
- [阅读笔记]An overview of gradient descent optimization algorithms
- Linux运维进阶-文档总结-Varnish的各项操作
- Java Web 之文件上传与下载
- Navicat11全系列激活(注册机)
- virtualenv中使用jupyter的问题
- 学习机器视觉的数学书本推荐
- 物联网平台机智云Android开源框架入门之旅(五) 分析怎么样把云端设备的信息状态同步到手机显示。
- hadoop初识之二:三大组件(HDFS,MapReduce,Yarn)以及mapreduce运行在yarn上的过程