java线程研究---(4)暂停Thread:sleep
2015-08-10 11:57
996 查看
暂停Thread
sleep方法:
顾名思义,睡一会。静态方法Thread.sleep()
sleep方法会让Thread对象暂时停止一段时间(即,进入blocked暂停状态),然后又恢复继续执行。
当一个Thread对象睡醒之后,不是立刻进入执行(running)状态,
而是进入等待执行(runnable)状态。
如果让一个Thread对象睡一秒钟,只是保证了这个Thread对象至少会停止这么长时间
线程状态图更新如下:
举例:
调用完Thread.sleep(1000)方法就是blocking event
调用完Thread.sleep(1000)方法之后,当前的Thread对象,就会进入blocked池
1s之后(unblocked),进入runnable状态,等待cpu调度进入running状态。
调用完Thread.sleep(1000)方法,Thread对象在睡觉期间,可能被外在事物吵醒而中断,所以要处理“InterruptedException”异常。
代码:
线程类MyClock
执行类ThreadsClockExample
注意,执行中的线程对象,如果run方法时间够长,那么经过cpu调度,也是会被系统给替换下来——从执行状态替换到等待执行状态,这种情况不属于线程暂停范畴。
sleep方法:
顾名思义,睡一会。静态方法Thread.sleep()
sleep方法会让Thread对象暂时停止一段时间(即,进入blocked暂停状态),然后又恢复继续执行。
当一个Thread对象睡醒之后,不是立刻进入执行(running)状态,
而是进入等待执行(runnable)状态。
如果让一个Thread对象睡一秒钟,只是保证了这个Thread对象至少会停止这么长时间
线程状态图更新如下:
举例:
调用完Thread.sleep(1000)方法就是blocking event
调用完Thread.sleep(1000)方法之后,当前的Thread对象,就会进入blocked池
1s之后(unblocked),进入runnable状态,等待cpu调度进入running状态。
调用完Thread.sleep(1000)方法,Thread对象在睡觉期间,可能被外在事物吵醒而中断,所以要处理“InterruptedException”异常。
代码:
线程类MyClock
package thread; import java.sql.Timestamp; import java.util.Date; public class MyClock implements Runnable { @Override public void run() { while (true) { try { Thread.sleep(1000); Timestamp tt = new Timestamp(new Date().getTime()); System.out.println(tt); } catch (InterruptedException e) { System.err.println(e); } } } }
执行类ThreadsClockExample
package thread; public class ThreadsClockExample { public static void main(String[] abc) throws InterruptedException { MyClock myClock = new MyClock(); Thread t1 = new Thread(myClock, "thread, MyClock"); t1.start(); } }
注意,执行中的线程对象,如果run方法时间够长,那么经过cpu调度,也是会被系统给替换下来——从执行状态替换到等待执行状态,这种情况不属于线程暂停范畴。
相关文章推荐
- java多线程实现
- Hadoop2.x eclipse下编程环境配置
- 使用MyEclipse开发第一个Web程序
- 【JNI】Java调用C函数
- cmd安装weblogic12c的时候总是说jre不是有效的JDK
- 防止表单的重复提交
- java程序的换行符/n怎么写?
- 在Java中“\t”与空格的区别及其意义
- 杭电ACM2042java做法
- Eclipse抛出GC overhead limit exceeded异常问题的分析与解决
- 理解Java对象序列化
- JAVA Cannot find class [×××] for bean with name '××' defined in class path resource [×××] 问题解决方法
- java 多态
- struts2框架原理
- struts2框架原理
- Android开发效率—Eclipse快捷键
- JAVA中的Future、ExecutorService
- 关于Java数组声明、创建、初始化的相关介绍
- maven执行打包命令(mvn package)是出现Java heap space错误的解决方法(windows环境)
- eclipse 同时打开两个文件