我们来详细讲解一下Java中线程让步(yield())和线程休眠(sleep())方法的用法和区别。
一、线程让步(yield())
线程让步是指让出当前线程对CPU的占用权,使得其他等待执行的线程有机会运行。Java中提供了线程让步的方法yield()。
其语法格式如下:
public static void yield()
实例:
下面是一个简单的示例,包含了两个线程,一个循环打印字母A,另一个循环打印字母B。通过yield()方法,让两个线程轮流执行,提高了程序的执行效率:
public class ThreadYieldDemo {
public static void main(String[] args) {
Thread t1=new Thread(new MyThreadA(),"A");
Thread t2=new Thread(new MyThreadB(),"B");
t1.start();
t2.start();
}
}
class MyThreadA implements Runnable {
public void run() {
for(int i=0;;i++) {
System.out.print(Thread.currentThread().getName()+"-"+(char)(i+'A')+" ");
Thread.yield();
}
}
}
class MyThreadB implements Runnable {
public void run() {
for(int i=0;;i++) {
System.out.print(Thread.currentThread().getName()+"-"+(char)(i+'a')+" ");
Thread.yield();
}
}
}
二、线程休眠(sleep())
线程休眠是指让当前线程暂停执行指定的时间,让其他等待执行的线程有机会运行。Java中提供了线程休眠的方法sleep()。
其语法格式如下:
public static void sleep(long millis)throws InterruptedException
示例:
下面是一个基本的示例,包含了两个线程,一个循环打印数字1~5,每打印完一个数字就休眠1秒钟;另一个循环打印字母A~E,每打印完一个字母就休眠2秒钟:
public class ThreadSleepDemo {
public static void main(String[] args) {
Thread t1=new Thread(new MyThreadA1(),"A");
Thread t2=new Thread(new MyThreadB1(),"B");
t1.start();
t2.start();
}
}
class MyThreadA1 implements Runnable {
public void run() {
for(int i=1;i<=5;i++) {
System.out.print(Thread.currentThread().getName()+":"+i+" ");
try {
Thread.sleep(1000); // 线程休眠1秒
} catch(InterruptedException e) {
e.printStackTrace();
}
}
}
}
class MyThreadB1 implements Runnable {
public void run() {
for(int i=1;i<=5;i++) {
System.out.print(Thread.currentThread().getName()+":"+(char)(i+'A'-'1')+" ");
try {
Thread.sleep(2000); // 线程休眠2秒
} catch(InterruptedException e) {
e.printStackTrace();
}
}
}
}
以上就是详解Java中的线程让步yield()与线程休眠sleep()方法的完整攻略,希望能对您的学习有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Java中的线程让步yield()与线程休眠sleep()方法 - Python技术站