你不知道的Java学习笔记22-- 线程阻塞(线程休眠)方法

时间:2021-11-26 23:30:19

线程阻塞(线程休眠)方法

一、Sleep(long millis)方法

Sleep(long millis):在指定的毫秒内让当前正在执行的线程休眠(暂停执行)。sleep()让当前正在执行的线程休眠,CPU去执行其他线程,等到休眠时间结束后,该线程处于就绪状态。等待CPU的继续执行,是接着上一次的执行,而不是重新执行。

/*
* 测试Sleep()方法
*/

public class TestSleep {
public static void main(String[] args) {
//创建线程对象
MyThread th1=new MyThread();
MyThread th2=new MyThread();
//设置线程名字
th1.setName("线程1");
th2.setName("线程2");
//调用线程start()方法激活线程
th1.start();
th2.start();
}

}
//定义MyThread类去继承Thread
class MyThread extends Thread{
//重写run()方法
public void run()
{
//利用for()循环进行打印输出
for(int i=0;i<5;i++)
{
//Thread.currentThread().getName()获取线程的名字
System.out.println(Thread.currentThread().getName()+":\t"+i);
//调用Sleep(long millis)方法,实现每个进行打印一次就进入millis毫秒的休眠状态。
try {
//每个进行打印一次就进入2000毫秒的休眠状态。
Thread.sleep(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

}
}

你不知道的Java学习笔记22-- 线程阻塞(线程休眠)方法

二、yield()方法

yield()让当前正在执行的线程立即停止,CPU执行其他线程,而刚才正在执行的线程会马上处于就绪状态,没有等待的时间,相当于sleep(0)的效果。

/*
* 测试Yeild()方法
*/

public class TestYeild {
public static void main(String[] args) {
//创建线程对象
MyThread th1=new MyThread();
MyThread th2=new MyThread();
//设置线程名字
th1.setName("线程1");
th2.setName("线程2");
//调用线程start()方法激活线程
th1.start();
th2.start();
}

}
//定义MyThread类去继承Thread
class MyThread extends Thread{
//重写run()方法
public void run()
{
//利用for()循环进行打印输出
for(int i=0;i<5;i++)
{
//Thread.currentThread().getName()获取线程的名字
System.out.println(Thread.currentThread().getName()+":\t"+i);
//调用Sleep(long millis)方法,实现每个进行打印一次就进入millis毫秒的休眠状态。
Thread.yield();

}

}
}

你不知道的Java学习笔记22-- 线程阻塞(线程休眠)方法