java线程休眠(sleep)
2015-03-27 09:11
351 查看
1、简介sleep
sleep方法属于Thread类中方法,是静态方法,只能控制当在前运行的线程。表示让一个线程进入睡眠状态,等待一定的时间之后,自动醒来进入到可运行状态,不会马上进入运行状态,因为线程调度机制恢复线程的运行也需要时间,一个线程对象调用了sleep方法之后,并不会释放他所持有的所有对象锁,所以也就不会影响其他进程对象的运行。但在sleep的过程中过程中有可能被其他对象调用它的interrupt(),产生InterruptedException异常,如果你的程序不捕获这个异常,线程就会异常终止,进入TERMINATED状态,如果你的程序捕获了这个异常,那么程序就会继续执行catch语句块(可能还有
finally语句块)以及以后的代码 。
sleep(long millis)
在指定的毫秒数内让当前正在执行的线程休眠(暂停执行)
sleep(long millis, int nanos)
在指定的毫秒数加指定的纳秒数内让当前正在执行的线程休眠(暂停执行)
2、运用场景
执行其它任务的时候,想要每间隔多少秒执行一次给定任务,sleep就会用上。
3、代码事例
![](http://img.blog.csdn.net/20150327093444193?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvRHh4MjM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
4、结论
当调用sleep()方法后,线程会释放CPU并且不再继续执行任务,知道休眠时间过了才进入可运行状态。如果休眠中线程被中断,该方法会立即抛出InterruptedException异常,可进行异常处理,main线程还是继续运行不受影响。
sleep方法属于Thread类中方法,是静态方法,只能控制当在前运行的线程。表示让一个线程进入睡眠状态,等待一定的时间之后,自动醒来进入到可运行状态,不会马上进入运行状态,因为线程调度机制恢复线程的运行也需要时间,一个线程对象调用了sleep方法之后,并不会释放他所持有的所有对象锁,所以也就不会影响其他进程对象的运行。但在sleep的过程中过程中有可能被其他对象调用它的interrupt(),产生InterruptedException异常,如果你的程序不捕获这个异常,线程就会异常终止,进入TERMINATED状态,如果你的程序捕获了这个异常,那么程序就会继续执行catch语句块(可能还有
finally语句块)以及以后的代码 。
sleep(long millis)
在指定的毫秒数内让当前正在执行的线程休眠(暂停执行)
sleep(long millis, int nanos)
在指定的毫秒数加指定的纳秒数内让当前正在执行的线程休眠(暂停执行)
2、运用场景
执行其它任务的时候,想要每间隔多少秒执行一次给定任务,sleep就会用上。
3、代码事例
package com.xxx.util; import java.util.Date; /** * Created with IntelliJ IDEA. * Date: 15-3-27 * Time: 上午8:51 * To change this template use File | Settings | File Templates. */ public class ThreadSleep implements Runnable { @Override public void run() { for(int i=0;i<15;i++){ System.out.printf("startTime:%s\n",new Date()); try { Thread.sleep(1000); } catch (InterruptedException e) { //线程中断在此处理 System.out.println("The thread has bean interrupted"); } } } }main类
package com.xxx.util; import java.util.concurrent.TimeUnit; /** * Created with IntelliJ IDEA. * Date: 15-3-27 * Time: 上午8:57 * To change this template use File | Settings | File Templates. */ public class ThreadSleepMain { public static void main(String[] args){ ThreadSleep threadSleep = new ThreadSleep(); Thread thread = new Thread(threadSleep); thread.start(); try { TimeUnit.SECONDS.sleep(5); } catch (InterruptedException e) { e.printStackTrace(); } thread.interrupt(); System.out.printf("%s:已调用interrupt()方法\n",thread.getName()); System.out.printf("%s:主线程还在运行\n",Thread.currentThread().getName()); } }运行结果:
4、结论
当调用sleep()方法后,线程会释放CPU并且不再继续执行任务,知道休眠时间过了才进入可运行状态。如果休眠中线程被中断,该方法会立即抛出InterruptedException异常,可进行异常处理,main线程还是继续运行不受影响。
相关文章推荐
- 详解Java中的线程让步yield()与线程休眠sleep()方法
- Java线程休眠(sleep)示例
- java多线程基础(4)-调度方式之暂停当前线程方式3-线程休眠(sleep)
- java 注意线程下的 异常捕获,会跳过sleep(10000)休眠,可能会出现死循环
- 详解Java中的线程让步yield()与线程休眠sleep()方法
- java笔记--线程休眠sleep()的运用
- [Java] 线程之sleep
- java线程的sleep(),wait(),notify(),yield()方法的区别要点
- Java线程:线程的调度-休眠
- Java线程:线程的调度-休眠
- java线程的sleep(),wait(),notify(),yield()方法的区别要点
- java线程同步原理及wait,notify的用法及与sleep的区别
- 再学java基础(11) java 线程(sleep,join,yield) 经典实例。
- Java线程:线程的调度-休眠
- java 线程 stop sleep interruptedException
- java 线程 stop sleep interruptedException
- java线程同步原理及wait,notify的用法及与sleep的区别
- Java线程同步阻塞, sleep(), suspend(), resume(), yield(), wait(), notify()
- java中线程sleep和加锁synchronized 关键字的一些区别
- Java线程:线程的调度-休眠