ava进阶(39)--守护线程与定时器
文档目录:
一、守护线程
二、定时器
---------------------------------------分割线:正文--------------------------------------------------------
一、守护线程
1、概念:
线程分为用户线程与守护线程(如垃圾回收线程)
2、特点:
一般守护线程是一个死循环,所有用户线程只要结束,守护线程自动结束
3、作用:
如每天00:00系统自动数据备份
需要使用定时器,并且可以将定时器设置为守护线程
4、举例说明
1 package JAVAADVANCE;
2
3 import java.util.TreeSet;
4
5 public class TestAdvance39TestThread01 {
6 public static void main(String[] args) {
7 Thread t=new BakDataThread();
8 t.setName("数据备份");
9 //启动线程前将线程设置为守护线程
10 t.setDaemon(true);
11 t.start();
12 //主线程,用户的线程
13 for(int i=0;i<5;i++){
14 System.out.println(Thread.currentThread().getName()+"----->"+i);
15 try {
16 Thread.sleep(1000);
17 } catch (InterruptedException e) {
18 e.printStackTrace();
19 }
20 }
21 }
22 }
23 class BakDataThread extends Thread{
24 @Override
25 public void run() {
26 int i=0;
27 while (true){
28 System.out.println(Thread.currentThread().getName()+"----->"+(++i));
29 try {
30 Thread.sleep(500);
31 } catch (InterruptedException e) {
32 e.printStackTrace();
33 }
34 }
35 }
36 }
查看运行结果:当主线程结束时守护线程结束
1 main----->0
2 数据备份----->1
3 数据备份----->2
4 数据备份----->3
5 main----->1
6 数据备份----->4
7 main----->2
8 数据备份----->5
9 数据备份----->6
110 main----->3
11 数据备份----->7
12 数据备份----->8
13 main----->4
14 数据备份----->9
15 数据备份----->10
二、定时器
1、作用:
间隔特定的时间执行特定的程序。
2、使用场景:
(1)定时数据备份
(2)每周银行账户总账操作
3、实现方式
(1)Java类:java.util.Timer定时器
(2)sprint Task框架,基于Timer
4、举例说明Timer()
1 package JAVAADVANCE;
2
3 import java.sql.SQLOutput;
4 import java.text.ParseException;
5 import java.text.SimpleDateFormat;
6 import java.util.Date;
7 import java.util.Timer;
8 import java.util.TimerTask;
9
10 public class TestAdvance39TestTimer {
11 public static void main(String[] args) {
12 //创建定时器对象
13 Timer timer=new Timer();
14 //等同于:Timer timer=new Timer(true);
15 //构造时间
16 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
17 Date firstTime= null;
18 try {
19 firstTime = sdf.parse("2020-04-03 00:20:00");
20 } catch (ParseException e) {
21 e.printStackTrace();
22 }
23 //指定定时任务
24 timer.schedule(new LogTimeTask(),firstTime,1000*5);
25 }
26 }
27
28 //编写定时器任务类
29 class LogTimeTask extends TimerTask{
30 @Override
31 public void run() {
32 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
33 String strTime=sdf.format(new Date());
34 System.out.println(strTime+":成功完成数据备份!");
35 }
36 }
查看运行结果:程序5秒执行一次
1 2021-04-03 00:24:37:成功完成数据备份!
2 2021-04-03 00:24:42:成功完成数据备份!
3 2021-04-03 00:24:47:成功完成数据备份!
4 2021-04-03 00:24:52:成功完成数据备份!
5 2021-04-03 00:24:57:成功完成数据备份!
6 2021-04-03 00:25:02:成功完成数据备份!
ava进阶(39)--守护线程与定时器的更多相关文章
- python_线程的开启、守护线程、锁、死锁、事件、定时器、条件、队列、池
0.承上 什么是线程? CPU调度的最小单位. 线程是进程的必要组成单位. 主线程: 程序开始运行的时候,就产生了一个主线进程来运行这个程序. 子线程: 是由主线程开启的其他线程. · 各线程之间的工 ...
- Python进阶----线程基础,开启线程的方式(类和函数),线程VS进程,线程的方法,守护线程,详解互斥锁,递归锁,信号量
Python进阶----线程基础,开启线程的方式(类和函数),线程VS进程,线程的方法,守护线程,详解互斥锁,递归锁,信号量 一丶线程的理论知识 什么是线程: 1.线程是一堆指令,是操作系统调度 ...
- Java多线程-线程的调度(守护线程)
本文转自http://www.cnblogs.com/linjiqin/p/3210004.html 感谢作者 守护线程与普通线程写法上基本没啥区别,调用线程对象的方法setDaemon(true), ...
- Java - 线程优先级和守护线程
Java多线程系列--“基础篇”10之 线程优先级和守护线程 概要 本章,会对守护线程和线程优先级进行介绍.涉及到的内容包括:1. 线程优先级的介绍2. 线程优先级的示例3. 守护线程的示例 转载请注 ...
- python网络编程--线程(锁,GIL锁,守护线程)
1.线程 1.进程与线程 进程有很多优点,它提供了多道编程,让我们感觉我们每个人都拥有自己的CPU和其他资源,可以提高计算机的利用率.很多人就不理解了,既然进程这么优秀,为什么还要线程呢?其实,仔细观 ...
- 【SSH网上商城项目实战15】线程、定时器同步首页数据(类似于博客定期更新排名)
转自:https://blog.csdn.net/eson_15/article/details/51387378 上一节我们做完了首页UI界面,但是有个问题:如果我在后台添加了一个商品,那么我必须重 ...
- 多线程深入理解和守护线程、子线程、锁、queue、evenet等介绍
1.多线程类的继承 import threading import time class MyThreading(threading.Thread): def __init__(self,n): su ...
- java守护线程。
java的守护线程:具体定义我也不太清楚,百度和谷歌了看的也不是很明白,但是啊,下边有给出一个例子自己领悟吧. 一.计时器的Timer声明时是否声明为守护线程对计时器的影响. /** * */ pac ...
- java中守护线程的一些概念和用法
网上的资料中,守护线程的功能一般都是“只要当前JVM实例中尚存任何一个非守护线程没有结束,守护线程就全部工作:只有当最后一个非守护线程结束是,守护线程随着JVM一同结束工作,Daemon作用是为其他线 ...
- 【java多线程】用户线程和守护线程的区别
java中线程分为两种类型:用户线程和守护线程.通过Thread.setDaemon(false)设置为用户线程:通过Thread.setDaemon(true)设置为守护线程.如果不设置次属性,默认 ...
随机推荐
- [ABC263C] Monotonically Increasing
Notes For two integer sequences of the same length $A_1,A_2,\dots,A_N$ and $B_1,B_2,\dots,B_N$, $A$ ...
- CompletableFuture进阶
CompletableFuture进阶 1.异步任务的交互 异步任务交互指将异步任务获取结果的速度相比较,按一定的规则( 先到先用 )进行下一步处理. 1.1 applyToEither applyT ...
- SpringBoot整合Swagger2一直弹窗的坑
问题现象: 我的Swagger配置信息文件如下 package com.qbb.qmall.service.config; import com.google.common.base.Predicat ...
- Codeforces-470 div2 C题
C. Producing Snow time limit per test 1 second memory limit per test 256 megabytes input standard in ...
- mybatis测试类的书写步骤
mybatis测试类的书写步骤 private SqlSession session; @Test //* 1.根据UserMapper接口的Class对象获取Mapper接口类型的对象 //* 2. ...
- TypeScript开篇
1.什么是TypeScript(TS)? Typescript 为 JS 带来了类型能力,如今已被越来越多的大型前端项目选用.Typescript 的出现大大改善了开发体验,增强了代码的可维护性和稳定 ...
- 在macOS中搭建.NET MAUI开发环境
@ 目录 准备 安装扩展 安装 .NET 安装工作负载 安装 Xcode 命令行工具 调试安卓应用 安装 JDK 安装 Android SDK 安装 Android 模拟器 安装模拟器 安装镜像 创建 ...
- java.time包中的类如何使用
java.time包是在java8中引入的日期和时间处理API,提供了一组全新的类,用于更灵活.更强大的处理日期和时间. 常用用法 1.localDate 表示日期,不包含时间和时区信息 import ...
- Programming abstractions in C阅读笔记:p184-p195
<Programming Abstractions In C>学习第61天,p184-p195总结. 一.技术总结 1.mutual recursion 2.natural number ...
- Java 展开或折叠PDF中的书签
PDF中的书签功能可快速定位到指定阅读位置.对多层书签可根据阅读喜好设置层级展开或折叠.本文将通过Java程序代码介绍如何来实现PDF书签展开或折叠. 程序环境 Spire.Pdf.jar( 免费版3 ...