Logo

郎哥编程

线程的休眠

2019-12-31 219

线程的休眠就是把当前正在运行的线程挂起一段时间(时间值由参数传入),挂起时间到期后,JVM会在适当的时间再次唤醒该线程。

Thread类的sleep()方法可以让当前线程休眠,sleep()方法说明如下:

sleep (long millis) throws InterruptedException

该方法用于在指定的millis毫秒内让当前正在执行的线程休眠(暂停执行),该方法的执行可能会抛出InterruptedException异常,因此需要将sleep()方法的调用放在try-catch块中。

案例1:建立ThreadSleep类,并在run()方法中编写线程功能代码。

在thread包下新建ThreadSleep类。代码如下:

package thread;
 
/** 
* @ClassName: ThreadSleep 
* @Description: 多线程操作(线程的休眠)案例1 
* @author 编程训练营 
* @date 
* 
*/
 
public class ThreadSleep extends Thread{
 
    /**
    * <p>Title: run</p> 
    * <p>Description: </p>   
    * @see java.lang.Thread#run() 
    */ 
   
    @Override
    public void run() {
       // TODO Auto-generated method stub
       super.run();
       for( int i = 0; i<100; i++ ) {
           System.out.println("MyRunner:" + i);
           try {
              System.out.println(Thread.currentThread().getName()+ "休眠0.5秒!");
              //自身线程挂起500毫秒
              Thread.sleep(500);
           } catch (InterruptedException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
           }
       }
    }
   
}

ThreadSleep类在每次循环都会调用Thread类的sleep方法将自身线程挂起500毫秒,然后再继续执行。

在thread包下新建ThreadSleepTest测试类,启动ThreadSleep线程。代码如下:

package thread;
 
/** 
* @ClassName: ThreadSleepTest 
* @Description: 多线程操作(线程的休眠)案例1   
* @author 编程训练营 
* @date 
* 
*/
 
public class ThreadSleepTest {
 
    /** 
    * @Title: main 
    * @Description: Java程序入口main方法
    * @param @param args    参数 
   
    * @return void    返回类型 
    * @throws 
    */
 
    public static void main(String[] args) {
   
       // 实例化MyThread对象
       ThreadSleep  thread = new ThreadSleep();
       // 调用Thread类的strat()方法启动线程
        thread.start();
       
        try {
           //主线程挂起1000毫秒
           System.out.println(Thread.currentThread().getName()+ "休眠1秒!");
           Thread.sleep(1000);
       } catch (InterruptedException e) {
           // TODO Auto-generated catch block
           e.printStackTrace();
       }
 
    }
 
}

在ThreadSleepTest类主线程启动子线程后,应用Thread类的sleep方法将主线程挂起1000毫秒,因为sleep方法抛出InterruptedException异常,因此调用sleep方法时,需要包含在try-cahtch语句,用于捕获sleep方法可能抛出的异常。

程序执行结果如下图所示:

image.png

代码在线纠错(通义千问 qwen-max)

支持粘贴多个代码文件,提交后由阿里云通义千问自动分析代码漏洞、语法错误、逻辑问题并给出修改建议。
您已解锁 AI 代码纠错功能,可正常使用!

评论区

登录 后发表评论
暂无评论