多线程_yield()和sleep()方法比较

Posted superdrew

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多线程_yield()和sleep()方法比较相关的知识,希望对你有一定的参考价值。

多线程示例展示:

RabbitThread.java线程:

技术分享图片
 1 package thread;
 2 
 3 /**
 4  * 兔子的线程
 5  * @author superdrew
 6  */
 7 public class RabbitRunnable implements Runnable{
 8     
 9     public void run() {
10         while(true){
11             
12             System.out.println("兔子领先了....加油!!!!"+
13                     Thread.currentThread().getName()+" "+Thread.currentThread().getPriority());
14             
15             //Thread.yield();
16         }
17     }
18     
19 }
RabbitThread.java

TortoiseThread.java线程:

技术分享图片
 1 package thread;
 2 
 3 public class TortoiseThread extends Thread{
 4     //线程属性名字: name
 5     private String name;
 6     //无参数构造方法
 7     public TortoiseThread(){}
 8     //有参数构造方法
 9     public TortoiseThread(String name){
10         super(name);
11     }
12     
13     public void run() {
14         while(true){
15             System.out.println("乌龟领先了。。。加油。。。。。。"+getName() +" "+getPriority());
16             Thread.yield();
17         }
18     }
19 }
TortoiseThread.java

TestThread线程:

技术分享图片
 1 package thread;
 2 /**
 3  * 功能:龟兔赛跑
 4  *            使用线程
 5  *         yield();
 6  * @author superdrew
 7  *         作用:暂停当前正在执行的线程对象,并执行其他线程
 8  *             调用yield()当前线程进入就绪状态,可以和其它的就绪状态的线程争取cpu
 9  *             如果其它的线程优先级别高,那么其它的线程获取cpu的机率就大一些
10  *         
11  *         yield()和sleep()区别
12  *         1.sleep()是暂停进入阻塞状态,只有睡眠时间到了 进入就绪状态
13  *           yield()是直接进入就绪状态,有可能刚进入就绪状态就获取到cpu又执行
14  *         2.yield()无异常   sleep()有
15  *     
16  *         
17  */
18 public class TestThread1 {
19     public static void main(String[] args) {
20         RabbitRunnable rr = new RabbitRunnable();
21         Thread tr = new Thread(rr);
22         tr.setName("兔子线程");
23         tr.start();
24         
25         TortoiseThread tt = new TortoiseThread("乌龟线程");
26         tt.start();
27     }
28 }
TestThread.java

 

以上是关于多线程_yield()和sleep()方法比较的主要内容,如果未能解决你的问题,请参考以下文章

sleep和yield的区别

Java 多线程 sleep()方法与yield()方法的区别

java中线程里的sleep的用法与yield的用法~

多线程学习-基础sleep()和yield()的区别(理论)

Java--多线程之join,yield,sleep;线程优先级;定时器;守护线程

Java多线程学习笔记— “Thread类三个方法:线程休眠sleep()线程礼让yield()线程强制执行join()”