初学线程休眠和礼让
Posted 做个机灵鬼
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初学线程休眠和礼让相关的知识,希望对你有一定的参考价值。
线程休眠,sleep()
1、休眠可以使一个线程暂缓处理,休眠时间一到程序就会唤醒继续执行,在Thread类中定义的休眠方法如下:
休眠方法一:public static void sleep(long millis) throws
InterruptedException; 休眠方法二:public static void sleep(long millis,int
nanos) throws InterruptedException;
2、在进行休眠的时候有可能会产生中断异常“InterruptedException”,中断异常属于Excepton的子类。
//模拟倒计时
public class textsleep {
public static void main(String[] args) {
try {
TextDown();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
//模拟计时器
public static void TextDown() throws InterruptedException {
int num = 10;
while (true){
Thread.sleep(1000);//sleep会有异常,这里可以抛出异常
System.out.println(num--);
if(num<=0){
break;
}
}
}
}
进行倒计时
线程礼让,yield()
1、线程礼让指的是先将资源让出去让别的线程先执行,但每次礼让执行的时候只礼让一次。使用Thread类中的yield()方法
2.线程礼让不一定成功,需要看cpu调度
public class TextYield {
public static void main(String[] args) {
MyYield myYield = new MyYield();
new Thread(myYield,"线程1").start();
new Thread(myYield,"线程2").start();
}
}
//线程礼让
class MyYield implements Runnable{
@Override
public void run() {
//获取线程名字
System.out.println(Thread.currentThread().getName()+"开始执行");
Thread.yield();//线程礼让 不一定成功,看cpu调度
System.out.println(Thread.currentThread().getName()+"结束");
}
}
如果没有线程礼让,那么在执行线程开始接着就是线性结束,这里线程礼让成
以上是关于初学线程休眠和礼让的主要内容,如果未能解决你的问题,请参考以下文章
Java多线程学习笔记— “Thread类三个方法:线程休眠sleep()线程礼让yield()线程强制执行join()”