文档章节

Java 多线程 - 线程 - 休眠与恢复

pan_1308
 pan_1308
发布于 2017/09/05 10:11
字数 350
阅读 6
收藏 0

一、概述

使用情景:在某一个预期的时间中断线程的执行。

eg: 程序的一个县城每隔一分钟检查一次 传感器的状态,其余时间什么都不做,在这段空闲时间,线程不占用任务的计算机资源。当它继续执行的 cpu 时钟来临时,JVM 会选中它继续执行。这个过程可以使用 sleep() 方法来实现。

sleep() -> 接受整型数值作为参数,以表明线程挂起执行的毫秒数。当线程休眠的时间结束了,JVM会分给它 cpu 时钟,线程将继续执行它的指令。

Thead 类的 sleep() 和 TimeUnit类的 sleep() 都可以 使当前线程休眠。

二、实现

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.TimeUnit;

/***
 * 使用 捕获 InterruptedException 异常来控制 线程的 中断
 */
public class FileClick implements Runnable{
    
	public void run() {
			for(int i=0;i<10;i++){
				System.out.println(Thread.currentThread().getName() + "-i=>" + i+",当前时间:" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
				try {
					TimeUnit.SECONDS.sleep(1);
				} catch (InterruptedException e) {
					System.out.println(Thread.currentThread().getName() +",线程中断,退出...");
					return;
				}
			}
	}
	
}
import java.util.concurrent.TimeUnit;

public class FileClickTest {

	public static void main(String[] args) {
		FileClick fileClick = new FileClick();
		Thread thread = new Thread(fileClick);
		thread.start();
		try {
			TimeUnit.SECONDS.sleep(3);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}	
		thread.interrupt();
	}
	
}

//console结果:
Thread-0-i=>0,当前时间:2017-09-05 10:10:52
Thread-0-i=>1,当前时间:2017-09-05 10:10:53
Thread-0-i=>2,当前时间:2017-09-05 10:10:54
Thread-0,线程中断,退出...

 

© 著作权归作者所有

共有 人打赏支持
pan_1308
粉丝 5
博文 95
码字总数 58819
作品 0
黄冈
私信 提问
Java 学习(27)---(多线程 / Runnable 接口 / 调度和优先级)

多线程 1 .概念 多线程:一个应用程序有多条执行路径进程:正在执行的应用程序 线程:进程的执行单元,执行路径 单线程:一个应用程序只有一条执行路径 多线程:一个应用程序有多条执行路径 ...

姜白告
08/03
0
0
sleep( ) 和 wait( ) 的这 5 个区别,你知道几个?

sleep(休眠) 和 wait(等待) 方法是 Java 多线程中常用的两个方法,它们有什么区别及一些该注意的地方有哪些呢?下面给大家一一分解。 区别1:使用限制 使用 sleep 方法可以让让当前线程休眠,...

Java技术栈
09/19
0
0
cpu个数、核数、线程数、Java多线程关系的理解

一 cpu个数、核数、线程数的关系 cpu个数:是指物理上,也及硬件上的核心数; 核数:是逻辑上的,简单理解为逻辑上模拟出的核心数; 线程数:是同一时刻设备能并行执行的程序个数,线程数=cp...

码代码的小司机
11/06
0
0
多线程并发神器--ThreadLocal

什么是ThreadLocal 可以理解成线程本地变量,传统的线程对一个变量操作时操作的是同一个对象,也存在线程安全的问题。 ThreadLocal是一个变量的本地副本,线程对变量的操作不会影响其他线程。...

java技术栈
2017/08/13
0
0
轻松学习java可重入锁(ReentrantLock)的实现原理

前言 相信学过java的人都知道 synchronized 这个关键词,也知道它用于控制多线程对并发资源的安全访问,兴许,你还用过Lock相关的功能,但你可能从来没有想过java中的锁底层的机制是怎么实现...

onedotdot
2017/10/31
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Ubuntu18.04 安装MySQL

1.安装MySQL sudo apt-get install mysql-server 2.配置MySQL sudo mysql_secure_installation 3.设置MySQL非root用户 设置原因:配置过程为系统root权限,在构建MySQL连接时出现错误:ERROR...

AI_SKI
今天
2
0
3.6 rc脚本(start方法) 3.7 rc脚本(stop和status方法) 3.8 rc脚本(以daemon方式启动)

3.6-3.7 rc脚本(start、stop和status方法) #!/usr/bin/env python# -*- coding: utf-8 -*-# [@Version](https://my.oschina.net/u/931210) : python 2.7# [@Time](https://my.oschina.......

隐匿的蚂蚁
今天
3
0
Cnn学习相关博客

CNN卷积神经网络原理讲解+图片识别应用(附源码) 笨方法学习CNN图像识别系列 深度学习图像识别项目(中):Keras和卷积神经网络(CNN) 卷积神经网络模型部署到移动设备 使用CNN神经网络进行...

-九天-
昨天
4
0
flutter 底部输入框 聊天输入框 Flexible

想在页面底部放个输入框,结果键盘一直遮住了,原来是布局问题 Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text("评论"), ...

大灰狼wow
昨天
4
0
Kernel I2C子系统

备注:所有图片来源于网络 1,I2C协议: 物理拓扑: I2C总线由两根信号线组成,一条是时钟信号线SCL,一条是数据信号线SDA。一条I2C总线可以接多个设备,每个设备都接入I2C总线的SCL和SDA。I...

yepanl
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部