Java编程语言在使用中有很多需要我们学习的,下面我们就来看看sleep()和yield()的区别之间的区别,希望大家在详细学习中有所收获  。只有在不断的学习才能更好的使用  。
1) sleep()使当前线程进入停滞状态,所以执行sleep()的线程在指定的时间内肯定不会执行;yield()只是使当前线程重新回到可执行状态,所以执行yield()的线程有可能在进入到可执行状态后马上又被执行  。
2) sleep()可使优先级低的线程得到执行的机会,当然也可以让同优先级和高优先级的线程有执行的机会;yield()只能使同优先级的线程有执行的机会  。
- class TestThreadMethod extends Thread{  
- public static int shareVar = 0;  
- public TestThreadMethod(String name){  
- super(name);  
- }  
- public void run(){  
- for(int i=0; i<4; i++){  
- System.out.print(Thread.currentThread().getName());  
- System.out.println(" : " + i);  
- //Thread.yield(); (1)  
- /* (2) */  
- try{  
- Thread.sleep(3000);  
- }  
- catch(InterruptedException e){  
- System.out.println("Interrupted");  
- }}}  
- }  
- public class TestThread{  
- public static void main(String[] args){  
- TestThreadMethod t1 = new TestThreadMethod("t1");  
- TestThreadMethod t2 = new TestThreadMethod("t2");  
- t1.setPriority(Thread.MAX_PRIORITY);  
- t2.setPriority(Thread.MIN_PRIORITY);  
- t1.start();  
- t2.start();  
- }  
- } 
运行结果为:
- t1 : 0  
- t1 : 1  
- t2 : 0  
- t1 : 2  
- t2 : 1  
- t1 : 3  
- t2 : 2  
- t2 : 3 
由结果可见,通过sleep()可使优先级较低的线程有执行的机会  。注释掉代码(2),并去掉代码(1)的注释,结果为:
- t1 : 0  
- t1 : 1  
- t1 : 2  
- t1 : 3  
- t2 : 0  
- t2 : 1  
- t2 : 2  
- t2 : 3 
可见,调用yield(),不同优先级的线程永远不会得到执行机会  。
以上就是对Java编程语言的相关介绍,希望大家有所帮助  。