文档目录:

一、守护线程

二、定时器

---------------------------------------分割线:正文--------------------------------------------------------

一、守护线程

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)--守护线程与定时器的更多相关文章

  1. python_线程的开启、守护线程、锁、死锁、事件、定时器、条件、队列、池

    0.承上 什么是线程? CPU调度的最小单位. 线程是进程的必要组成单位. 主线程: 程序开始运行的时候,就产生了一个主线进程来运行这个程序. 子线程: 是由主线程开启的其他线程. · 各线程之间的工 ...

  2. Python进阶----线程基础,开启线程的方式(类和函数),线程VS进程,线程的方法,守护线程,详解互斥锁,递归锁,信号量

    Python进阶----线程基础,开启线程的方式(类和函数),线程VS进程,线程的方法,守护线程,详解互斥锁,递归锁,信号量 一丶线程的理论知识 什么是线程:    1.线程是一堆指令,是操作系统调度 ...

  3. Java多线程-线程的调度(守护线程)

    本文转自http://www.cnblogs.com/linjiqin/p/3210004.html 感谢作者 守护线程与普通线程写法上基本没啥区别,调用线程对象的方法setDaemon(true), ...

  4. Java - 线程优先级和守护线程

    Java多线程系列--“基础篇”10之 线程优先级和守护线程 概要 本章,会对守护线程和线程优先级进行介绍.涉及到的内容包括:1. 线程优先级的介绍2. 线程优先级的示例3. 守护线程的示例 转载请注 ...

  5. python网络编程--线程(锁,GIL锁,守护线程)

    1.线程 1.进程与线程 进程有很多优点,它提供了多道编程,让我们感觉我们每个人都拥有自己的CPU和其他资源,可以提高计算机的利用率.很多人就不理解了,既然进程这么优秀,为什么还要线程呢?其实,仔细观 ...

  6. 【SSH网上商城项目实战15】线程、定时器同步首页数据(类似于博客定期更新排名)

    转自:https://blog.csdn.net/eson_15/article/details/51387378 上一节我们做完了首页UI界面,但是有个问题:如果我在后台添加了一个商品,那么我必须重 ...

  7. 多线程深入理解和守护线程、子线程、锁、queue、evenet等介绍

    1.多线程类的继承 import threading import time class MyThreading(threading.Thread): def __init__(self,n): su ...

  8. java守护线程。

    java的守护线程:具体定义我也不太清楚,百度和谷歌了看的也不是很明白,但是啊,下边有给出一个例子自己领悟吧. 一.计时器的Timer声明时是否声明为守护线程对计时器的影响. /** * */ pac ...

  9. java中守护线程的一些概念和用法

    网上的资料中,守护线程的功能一般都是“只要当前JVM实例中尚存任何一个非守护线程没有结束,守护线程就全部工作:只有当最后一个非守护线程结束是,守护线程随着JVM一同结束工作,Daemon作用是为其他线 ...

  10. 【java多线程】用户线程和守护线程的区别

    java中线程分为两种类型:用户线程和守护线程.通过Thread.setDaemon(false)设置为用户线程:通过Thread.setDaemon(true)设置为守护线程.如果不设置次属性,默认 ...

随机推荐

  1. zookeeper JavaAPI 操作-watch监听

    1.NodeCache监听代码: @Test public void testNodeCache() throws Exception { //1.创建NodeCache对象 NodeCache no ...

  2. ElasticSearch之cat recovery API

    命令样例如下: curl -X GET "https://localhost:9200/_cat/recovery?v=true&pretty" --cacert $ES_ ...

  3. java框架Mybatis的第一个程序

    1:什么是MyBatis MyBatis 是一款优秀的持久层框架 MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程 MyBatis 可以使用简单的 XML 或注解来配 ...

  4. electron入门之通知Notification(二)

    electron入门到入土,从渲染线程中创建新窗口.2022-03-21入门版本17.1.2 electron重要概念,只有一个主线程,其他都是渲染进程或者叫子线程,他们不能直接相互操作,可以通过ip ...

  5. Http 编码格式简介

    Http 格式简介 Http 是用于在客户端和服务端之间进行通信的一种消息格式,一般由以下几个部分组成: 起始行:这部分在 Http 响应中也被称为状态行,针对不同的 Http 类型,其中包含的内容也 ...

  6. 【OpenVINO】 使用 OpenVINO CSharp API 部署 PaddleOCR 项目介绍

    前言:   在之前的项目中,我们已经使用 OpenVINOTM CSharp API 部署 PaddleOCR 全系列模型,但随着PaddleOCRv4版本发布以及OpenVINO CSharp AP ...

  7. Typora+Docsify快速入门

    Typora是什么? ​ Typora中文版是一款好用极简的跨平台Markdown编辑器,软件使用这款软件能够帮助用户轻松将文本转换到HTML,软件从底层向上设计,软件支持markdown的标准语法, ...

  8. Flutter Getx 状态管理 --- 响应式状态管理器

    状态管理 Get 并不是比任何其他状态管理器更好或更差,而是说你应该分析这些要点以及下面的要点来选择只用 Get,还是与其他状态管理器结合使用. Get不是其他状态管理器的敌人,因为Get是一个微框架 ...

  9. 痞子衡嵌入式:原来i.MXRT1170内部RAM的ECC初始化工作可全部由ROM完成

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是i.MXRT1170内部RAM的ECC初始化工作可全部由ROM完成. 痞子衡之前写了三篇文章 <M7 FlexRAM ECC> ...

  10. PostgreSQL常用运维SQL

    一.数据库连接 1.获取数据库实例连接数 select count(*) from pg_stat_activity; 2.获取数据库最大连接数 show max_connections 3.查询当前 ...