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

我们可以使用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 {
@Override
public void run() {
for (int i = 0; i < 10; i++) {
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;

/**
* @author xusucheng
* @create 2018-04-24
**/
public class Main {
public static void main(String[] args) {
FileClock clock=new FileClock();
Thread thread=new Thread(clock);
thread.start();
try {
TimeUnit.SECONDS.sleep(5);
} catch (InterruptedException e) {
e.printStackTrace();
} thread.interrupt();
}
}

输出:

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并发编程实例--5.线程睡眠的更多相关文章

  1. Java并发编程系列-(2) 线程的并发工具类

    2.线程的并发工具类 2.1 Fork-Join JDK 7中引入了fork-join框架,专门来解决计算密集型的任务.可以将一个大任务,拆分成若干个小任务,如下图所示: Fork-Join框架利用了 ...

  2. 【Java并发编程一】线程安全和共享对象

    一.什么是线程安全 当多个线程访问一个类时,如果不用考虑这些线程在运行时环境下的调度和交替执行,并且不需要额外的同步及在调用代码代码不必作其他的协调,这个类的行为仍然是正确的,那么称这个类是线程安全的 ...

  3. 【java并发编程实战】-----线程基本概念

    学习Java并发已经有一个多月了,感觉有些东西学习一会儿了就会忘记,做了一些笔记但是不系统,对于Java并发这么大的"系统",需要自己好好总结.整理才能征服它.希望同仁们一起来学习 ...

  4. Java并发编程:进程和线程的由来(转)

    Java多线程基础:进程和线程之由来 在前面,已经介绍了Java的基础知识,现在我们来讨论一点稍微难一点的问题:Java并发编程.当然,Java并发编程涉及到很多方面的内容,不是一朝一夕就能够融会贯通 ...

  5. 【Java并发编程六】线程池

    一.概述 在执行并发任务时,我们可以把任务传递给一个线程池,来替代为每个并发执行的任务都启动一个新的线程,只要池里有空闲的线程,任务就会分配一个线程执行.在线程池的内部,任务被插入一个阻塞队列(Blo ...

  6. Java并发编程扩展(线程通信、线程池)

    之前我说过,实现多线程的方式有4种,但是之前的文章中,我只介绍了两种,那么下面这两种,可以了解了解,不懂没关系. 之前的文章-->Java并发编程之多线程 使用ExecutorService.C ...

  7. Java并发编程(01):线程的创建方式,状态周期管理

    本文源码:GitHub·点这里 || GitEE·点这里 一.并发编程简介 1.基础概念 程序 与计算机系统操作有关的计算机程序.规程.规则,以及可能有的文件.文档及数据. 进程 进程是计算机中的程序 ...

  8. java并发编程实战之线程安全性(一)

    1.1什么是线程安全性 要对线程安全性给出一个确切的定义是非常复杂的.最核心的概念就是正确性.正确性:某个类的行为与其规范完全一致.在良好的规范中通常会定义各种不变性条件来约束对象的状态,以及定义各种 ...

  9. Java并发编程学习:线程安全与锁优化

    本文参考<深入理解java虚拟机第二版> 一.什么是线程安全? 这里我借<Java Concurrency In Practice>里面的话:当多个线程访问一个对象,如果不考虑 ...

  10. Java并发编程(一):线程基础知识以及synchronized关键字

    1.线程与多线程的概念:在一个程序中,能够独立运行的程序片段叫作“线程”(Thread).多线程(multithreading)是指从软件或者硬件上实现多个线程并发执行的技术. 2.多线程的意义:多线 ...

随机推荐

  1. [转帖]ORACLE新参数MAX_IDLE_TIME和MAX_IDLE_BLOCKING_TIME简介

    https://www.cnblogs.com/kerrycode/p/16856171.html Oracle 12.2 引入了新参数MAX_IDLE_TIME.它可以指定会话空闲的最大分钟数.如果 ...

  2. Python学习之十五_不同类型数据库表内容比较

    Python学习只十五_不同类型数据库表内容比较 前言 最近学习力总结了很多Python相关的内容 本次想继续学习一下不同数据库之间的数据比较. 这样理论上可以极大的缩减不同数据库测试成本. 感谢Py ...

  3. [转帖][大数据]ETL之增量数据抽取(CDC)

    https://www.cnblogs.com/johnnyzen/p/12781942.html 目录 1 CDC 概念 1.1 定义 1.2 需求背景 1.3 考察指标 2 CDC 常见解决方案 ...

  4. [转帖]【mmap】深度分析mmap:是什么 为什么 怎么用 性能总结

    https://blog.csdn.net/bandaoyu/article/details/106750990 目录 有什么用? 1.文件映射 2.分配内存(匿名文件映射) mmap基础概念 mma ...

  5. 【转帖】让互联网更快:新一代QUIC协议在腾讯的技术实践分享

    https://www.cnblogs.com/jb2011/p/8458549.html 本文来自腾讯资深研发工程师罗成在InfoQ的技术分享. 1.前言 如果:你的 App,在不需要任何修改的情况 ...

  6. linux中如何统计千万个文件总和

    很简单.很简单.很简单.重要事情说三遍 命令:ls | grep '匹配信息' | wc -l ls查看该目录下的所有文件,果然隐藏文件也要匹配上的话,需要:ls -a grep匹配,如查看文件中有. ...

  7. Gorm 应用开发时区问题与unique唯一索引字段数据冲突问题

    目录 一.定义表模型时区问题 1.1 time.Time 与int64 1.2 优势 二.unique唯一索引字段数据冲突问题 一.定义表模型时区问题 1.1 time.Time 与int64 一般情 ...

  8. C/C++ 实现Socket交互式服务端

    在 Windows 操作系统中,原生提供了强大的网络编程支持,允许开发者使用 Socket API 进行网络通信,通过 Socket API,开发者可以创建.连接.发送和接收数据,实现网络通信.本文将 ...

  9. html 图片地图

    <html> <head> <title></title> </head> <body> <img src="8 ...

  10. JS数字转为带有逗号的字符串

    alert(formatNum(10000000.87)); /** * @param n 输入数字 * @param is_int 是否只显示整数 * @returns {string} */ fu ...