学习狂神的第五天
Java进阶之多线程:线程休眠(sleep)前言
今天我们来水一下线程休眠
线程休眠,目前我的认知,仅仅用于放大问题的发生性。
下面直接开始水。
一、线程休眠(sleep)
我们直接来写一个打印当前系统时间的程序,来演示一下模拟网络延时。
我们模拟1000ms输出一次。
1.在线程中直接调用sleep
方法很简单
import java.sql.Date;
import java.text.SimpleDateFormat;
public class TestSleep2 {
// 打印当前系统时间
public static void main(String[] args) throws InterruptedException
{
Date startTime = new Date(System.currentTimeMillis());
while(true)
{
try{
Thread.sleep(1000);
System.out.println(new SimpleDateFormat("HH:mm:ss").format(startTime));
startTime = new Date(System.currentTimeMillis());// 更新当前时间
}catch(InterruptedException e)
{
e.printStackTrace();
}
}
}
}
2.结果
二、线程礼让(yield)
1.在线程中直接调用yield
方法很简单
// 测试礼让线程
// 礼让不一定成功,看CPU心情
public class TestYield {
public static void main(String[] args)
{
MyYield myYield = new MyYield();
new Thread(myYield,"a").start();
new Thread(myYield,"b").start();
}
}
class MyYield implements Runnable{
public void run()
{
System.out.println(Thread.currentThread().getName() + "线程开始执行");
Thread.yield();// 礼让
System.out.println(Thread.currentThread().getName() + "线程停止执行");
}
}
2.结果
上面说了,yield礼让不一定成功,一切得看CPU心情。
所以结果也会不一样。
这个结果中,虽然调用了礼让,但是却没有礼让成功。
这里,就礼让成功了。