热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Java并发编程实例5.线程睡眠

有时候我们需要让线程在一段时间内不做任何事。例如某线程每个一小时检测一下传感器,剩余的时间不做任何事。我们可以使用sleep()方法使线程睡眠,此期间

有时候我们需要让线程在一段时间内不做任何事。例如某线程每个一小时检测一下传感器,剩余的时间不做任何事。

我们可以使用sleep()方法使线程睡眠,此期间不占用计算机资源。

这个方法接受一个整数表示睡眠的毫秒数。

睡眠结束后,JVM将从新分配其CPU时间。

另一种睡眠方式是使用TimeUnit枚举元素的sleep()方法。



本例中,我们将开发一个程序,使用sleep()方法,实现每秒钟输出系统时间。


FileClock.java


package com.dylan.thread.ch1.c05;import java.util.Date;
import java.util.concurrent.TimeUnit;/*** @author xusucheng* @create 2018-04-13**/
public class FileClock implements Runnable {&#64;Overridepublic void run() {for (int i &#61; 0; i <10; i&#43;&#43;) {System.out.printf("%s\n", new Date());try {TimeUnit.SECONDS.sleep(1);} catch (InterruptedException e) {System.out.printf("The FileClock has been interrupted");}}}}


Main.java


package com.dylan.thread.ch1.c05;import java.util.concurrent.TimeUnit;/*** &#64;author xusucheng* &#64;create 2018-04-24**/
public class Main {public static void main(String[] args) {FileClock clock&#61;new FileClock();Thread thread&#61;new Thread(clock);thread.start();try {TimeUnit.SECONDS.sleep(5);} catch (InterruptedException e) {e.printStackTrace();}thread.interrupt();}
}



输出&#xff1a;

Tue Apr 24 23:27:30 CST 2018
Tue Apr 24 23:27:32 CST 2018
Tue Apr 24 23:27:33 CST 2018
Tue Apr 24 23:27:34 CST 2018
Tue Apr 24 23:27:35 CST 2018
The FileClock has been interruptedTue Apr 24 23:27:35 CST 2018
Tue Apr 24 23:27:36 CST 2018
Tue Apr 24 23:27:37 CST 2018
Tue Apr 24 23:27:38 CST 2018
Tue Apr 24 23:27:39 CST 2018









推荐阅读
  • Java自带的观察者模式及实现方法详解
    本文介绍了Java自带的观察者模式,包括Observer和Observable对象的定义和使用方法。通过添加观察者和设置内部标志位,当被观察者中的事件发生变化时,通知观察者对象并执行相应的操作。实现观察者模式非常简单,只需继承Observable类和实现Observer接口即可。详情请参考Java官方api文档。 ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 本文介绍了解决Netty拆包粘包问题的一种方法——使用特殊结束符。在通讯过程中,客户端和服务器协商定义一个特殊的分隔符号,只要没有发送分隔符号,就代表一条数据没有结束。文章还提供了服务端的示例代码。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了在多平台下进行条件编译的必要性,以及具体的实现方法。通过示例代码展示了如何使用条件编译来实现不同平台的功能。最后总结了只要接口相同,不同平台下的编译运行结果也会相同。 ... [详细]
  • RouterOS 5.16软路由安装图解教程
    本文介绍了如何安装RouterOS 5.16软路由系统,包括系统要求、安装步骤和登录方式。同时提供了详细的图解教程,方便读者进行操作。 ... [详细]
  • 数组的排序:数组本身有Arrays类中的sort()方法,这里写几种常见的排序方法。(1)冒泡排序法publicstaticvoidmain(String[]args ... [详细]
  • 面向对象之3:封装的总结及实现方法
    本文总结了面向对象中封装的概念和好处,以及在Java中如何实现封装。封装是将过程和数据用一个外壳隐藏起来,只能通过提供的接口进行访问。适当的封装可以提高程序的理解性和维护性,增强程序的安全性。在Java中,封装可以通过将属性私有化并使用权限修饰符来实现,同时可以通过方法来访问属性并加入限制条件。 ... [详细]
  • (三)多表代码生成的实现方法
    本文介绍了一种实现多表代码生成的方法,使用了java代码和org.jeecg框架中的相关类和接口。通过设置主表配置,可以生成父子表的数据模型。 ... [详细]
  • 纠正网上的错误:自定义一个类叫java.lang.System/String的方法
    本文纠正了网上关于自定义一个类叫java.lang.System/String的错误答案,并详细解释了为什么这种方法是错误的。作者指出,虽然双亲委托机制确实可以阻止自定义的System类被加载,但通过自定义一个特殊的类加载器,可以绕过双亲委托机制,达到自定义System类的目的。作者呼吁读者对网上的内容持怀疑态度,并带着问题来阅读文章。 ... [详细]
author-avatar
450651324_43c723
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有