1) sleep()使当前线程进入停滞状态,所以执行sleep()的线程在指定的时间内肯定不会执行;
yield()只是使当前线程重新回到可执行状态(yield只是屈服一个同级的对手,也可以说是让一下它们),所以执行yield()的线程有可能在进入到可执行状态后马上又被执行。
2) sleep()可使优先级低的线程得到执行的机会,当然也可以让同优先级和高优先级的线程有执行的机会;
yield()只能使同优先级的线程有执行的机会。
public class ThreadTest implements Runnable{
public void run(){
for(int k=0;k<10;k++){
if(k == 5 && Thread.currentThread().getName().equals("t1")){
Thread.yield();
}
System.out.println(Thread.currentThread().getName()+ " : " + k);
}
}
public static void main(String[] args) {
Runnable r = new ThreadTest();
Thread t1 = new Thread(r,"t1");
Thread t2 = new Thread(r,"t2");
t1.setPriority(Thread.MAX_PRIORITY);
t2.setPriority(Thread.MIN_PRIORITY);
t1.start();
t2.start();
}
}
输出结果:
t1 : 0
t1 : 1
t1 : 2
t1 : 3
t1 : 4
t1 : 5
t1 : 6
t1 : 7
t1 : 8
t1 : 9
t2 : 0
t2 : 1
t2 : 2
t2 : 3
t2 : 4
t2 : 5
t2 : 6
t2 : 7
t2 : 8
t2 : 9
多次运行这个程序,输出也是一样。这说明:
yield()方法不会使不同优先级的线程有执行的机会。
分享到:
相关推荐
NULL 博文链接:https://coolfire9201207034819.iteye.com/blog/1660744
T03_Sleep_Yield_Join.java
Java线程中wait、await、sleep、yield、join用法汇总,文章里面总结了这些关键字的用法,并且里面带有源码帮助分析用法,此一文就可以理解这些关键字用法,推荐拥有
sleep()与wait()的区别 1.这两个方法来自不同的类,sleep是Thread类的方法,而wait是Object类的方法; 2.执行sleep方法后不会释放锁,而执行wait方法后会释放锁; 3.wait,notify和notifyAll只能在同步方法或同步...
java中yieldsleep以及wait的区别.pdf
CSDN前辈众多,本文要说全部原创,那不现实,但本文绝对走肾之文,概念知识多来自前辈博文讲解,特此感谢。 文章末尾会给出本人学习过程中翻阅的优秀博文。 正文 给出一段准备代码,相信各位一看就懂,不懂,你不懂...
高薪程序员面试题精讲系列63之说说sleep()、yield()、join()、wait()的区别.pdf,这是一份不错的文件
长沙欧柏泰克软件学院专业老师精心为其学员整理的50个安卓面试习题及答案哦!学习安卓的童鞋们可以参考看看
线程的基本概念、线程类、任务类、线程优先级、sleep()方法(休眠)、yield()方法(礼让)、join方法(合并)、interrupt()方法(中断),线程的生命周期 线程 与 进程 的关系:**有一个进程中至少包含一个线程 **...
主要介绍了Java sleep方法及中断方式、yield方法代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
之前,我讨论了一个wait()和sleep()方法区别的问题,这一次,我将会讨论join()和yield()方法的区别。坦白的说,实际上我并没有用过其中任何一个方法,所以,如果你感觉有不恰当的地方,请提出讨论。 Java线程调度...
Java中的线程让步会让线程让出优先级,而休眠则会让线程进入阻塞状态等待被唤醒,这里我们对比线程等待的wait()方法,来详解Java中的线程让步yield()与线程休眠sleep()方法
一个java的多线程juc总结,其中包含基础知识,现成的状态图,关于synchronized,线程优先级和线程分类,interrupt、interupted、isInterrupted的使用,sleep、yield、join的详细使用,锁和等待池介绍。
sleep方法和wait方法的区别 stop,suspend,resume等方法为什么会被遗弃 interrupt,interrupted,isInterrupted方法区别 join方法 yield方法 多线程 进程和线程 进程与线程最主要的区别是它们是操作系统管理资源的不同...
在上述例子中,我们在main主线程中创建了两个新的线程lefthand和righthand。当lefthand调用start()开始运行时,类Lefthand中的run()将自动被执行。 我们来分析一下上面程序的输出结果。Left线程首先开始执行,这时...
sleep(1000); digitalWrite(13, LOW); sleep(1000); //多线程的loop } void setup() { mySCoop.start(); }//形式setup void loop() { yield(); }//形式loop 格式二 #include <SCoop.h>//引入头文件 ...
线程状态和sleep/yield/join/stop/destroy方法 170 新生状态 170 就绪状态 170 运行状态 170 死亡状态 170 终止线程的典型方法(重要!!!) 171 阻塞状态(sleep/yield/join方法) 171 线程基本信息和优先级别 173 ...
1|0使用yield完成多任务 import time def test1(): while True: print(--1--) time.sleep(0.5) yield None def test2(): while True: print(--2--) time.sleep(0.5) yield None if __name__ == __main__: ...
task.sleep(ms) Function.task(thisObj, args...) 例子 var fs = require ( 'fs' ) ; var task = require ( 'node-taskjs' ) ; function * test_func ( ) { console . log ( 'test' ) ; yield * task . sleep ...
angular.js 的基于生成器的最终流控制优点和 为来自 angular.js 的生成器提供浏览器支持确保包含 runtime.js 非常基本的示例(borwserify / require.js): angular.module('test', []).controller('CtrlTest', ...