线程阻塞(线程休眠)方法
一、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();
}
}
}
}
二、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();
}
}
}