JavaEE->多线程:定时器
定时器
约定一个时间,时间到了,执行某个代码逻辑(进行网络通信时常见)
客户端给服务器发送请求 之后就需要等待 服务器的响应,客户端不可能无限的等,需要一个最大的期限。这里“等待的最大时间”可以用定时器的方式实现。
标准库中有现成的定时器实现:
主线程执行schedule方法的时候,就是把这个任务放到timer对象中。
timer里面本身也含一个线程——>"扫描线程"
时间到了,扫描线程就会执行刚才安排的任务
执行完任务之后,进程并未结束,timer内部的线程阻止了进程的结束。
timer里面也可安排多个任务
public class Demo28 {public static void main(String[] args) {Timer timer = new Timer();timer.schedule(new TimerTask() {public void run() {System.out.println("执行第四个任务");}},4000);timer.schedule(new TimerTask() {public void run() {System.out.println("执行第三个任务");}},3000);timer.schedule(new TimerTask() {public void run() {System.out.println("执行第二个任务");}},2000);timer.schedule(new TimerTask() {public void run() {System.out.println("执行第一个任务");}},1000);System.out.println("程序启动!");}
}
阻止结束,但是我们可以加timer自带的cancel()方法来结束线程
自己实现一个定时器
1.Timer里面需要有一个线程,扫描任务是否到时间
2.需要有一个数据结构来保存所有的任务
3.需要创建一个类,通过类的对象来描述一个任务。(至少包括任务的内容和时间)
由于任务都带有一个时间的先后顺序,所以我们采用优先级队列的数据结构来实现。
MyTimerTask
MyTimer
线程安全
main
相关文章:

JavaEE->多线程:定时器
定时器 约定一个时间,时间到了,执行某个代码逻辑(进行网络通信时常见) 客户端给服务器发送请求 之后就需要等待 服务器的响应,客户端不可能无限的等,需要一个最大的期限。这里“等待的最大时间”可以用定时…...
6个月Python学习计划 Day 15 - 函数式编程、高阶函数、生成器/迭代器
第三周 Day 1 🎯 今日目标 掌握 Python 中函数式编程的核心概念熟悉 map()、filter()、reduce() 等高阶函数结合 lambda 和 列表/字典 进行数据处理练习了解生成器与迭代器基础,初步掌握惰性计算概念 🧠 函数式编程基础 函数式编程是一种…...

<el-table>构建树形结构
最佳实践 el-table实现树形结构主要依靠row-key和tree-props来实现的。 💫 无论是el-table实现的树形结构还是el-tree组件都是绑定的树形结构的数据,因此如果数据是扁平的话,需要进行树化。 代码 <template><div><el-table:d…...

linux——磁盘和文件系统管理
1、磁盘基础简述 1.1 硬盘基础知识 硬盘(Hard Disk Drive,简称 HDD)是计算机常用的存储设备之一. p如果从存储数据的介质上来区分,硬盘可分为机械硬盘(Hard Disk Drive, HDD)和固态硬盘(Soli…...

云原生 DevOps 实践路线:构建敏捷、高效、可观测的交付体系
📝个人主页🌹:一ge科研小菜鸡-CSDN博客 🌹🌹期待您的关注 🌹🌹 一、引言:DevOps 与云原生的深度融合 在传统软件工程范式下,开发与运维之间存在天然的壁垒。开发希望尽快…...

gateway 网关 路由新增 (已亲测)
问题: 前端通过gateway调用后端接口,路由转发失败,提示404 not found 排查: 使用 { "href":"/actuator/gateway/routes", "methods":[ "POST", "GET" ] } 命令查看路由列表&a…...
ArcGIS Pro 3.4 二次开发 - 共享
环境:ArcGIS Pro SDK 3.4 + .NET 8 文章目录 共享1 共享1.1 获取当前活动的门户1.2 获取所有门户的列表1.3 将门户添加到门户列表1.4 获取门户并登录,将其设置为活动状态1.5 监听门户事件1.6 从活动门户获取当前登录用户1.7 获取当前用户的“在线”门户视图1.8 获取当前用户的…...
Python html 库用法详解
html 是 Python 的标准库之一,主要用于处理 HTML 相关的编码和解码操作。它提供了两个核心函数:escape() 和 unescape()。 基本功能 1、html.escape() - HTML 编码 将特殊字符转换为 HTML 实体,防止 XSS 攻击或确保 HTML 正确显示 import…...
C#异常处理进阶:精准获取错误行号的通用方案
C#异常处理进阶:精准获取错误行号的通用方案 在软件开发中,快速定位异常发生的代码行号是调试的关键环节。C# 的异常处理机制提供了StackTrace属性用于记录调用堆栈,但直接解析该字符串需要考虑语言环境、格式差异等问题。本文将从基础方法出…...
如何快速找出某表的重复记录 - 数据库专家面试指南
如何快速找出某表的重复记录 - 数据库专家面试指南 一、理解问题本质 在数据库操作中,重复记录通常指表中存在两条或多条记录在特定字段组合上具有相同值的情况。识别重复记录是数据清洗、ETL流程和数据库维护的重要任务。 关键概念:重复记录的定义取决于业务场景,可能是基…...

Python 训练营打卡 Day 33-神经网络
简单神经网络的流程 1.数据预处理(归一化、转换成张量) 2.模型的定义 继承nn.Module类 定义每一个层 定义前向传播流程 3.定义损失函数和优化器 4.定义训练过程 5.可视化loss过程 预处理补充: 分类任务中,若标签是整…...
resolvers: [ElementPlusResolver()] 有什么用?
resolvers: [ElementPlusResolver()] 是配合特定自动化导入插件(如 unplugin-vue-components 和 unplugin-auto-import)使用的配置项,其核心作用是实现 Element Plus 组件库的按需自动导入。 具体来说: 自动导入组件 (对应 …...
XHR / Fetch / Axios 请求的取消请求与请求重试
XHR / Fetch / Axios 请求的取消请求与请求重试是前端性能优化与稳定性处理的重点,也是面试高频内容。下面是这三种方式的详解封装方案(可直接复用)。 ✅ 一、Axios 取消请求与请求重试封装 1. 安装依赖(可选,用于扩展…...
机器学习-ROC曲线 和 AUC指标
1. 什么是ROC曲线? ROC(Receiver Operating Characteristic,受试者工作特征曲线)是用来评估分类模型性能的一种方法,特别是针对二分类问题(比如“患病”或“健康”)。 …...
Spring Boot缓存组件Ehcache、Caffeine、Redis、Hazelcast
一、Spring Boot缓存架构核心 Spring Boot通过spring-boot-starter-cache提供统一的缓存抽象层: #mermaid-svg-PW9nciqD2RyVrZcZ {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-PW9nciqD2RyVrZcZ .erro…...
【学习记录】深入解析 AI 交互中的五大核心概念:Prompt、Agent、MCP、Function Calling 与 Tools
📌 引言 随着大语言模型(LLM)的发展,AI 已经不再只是“回答问题”的工具,而是可以主动执行任务、调用外部资源、甚至构建完整工作流的智能系统。 为了更好地理解和使用这些能力,我们需要了解 AI 交互中几…...

如何有效删除 iPhone 上的所有内容?
“在出售我的 iPhone 之前,我该如何清除它?我担心如果我卖掉它,有人可能会从我的 iPhone 中恢复我的信息。” 升级到新 iPhone 后,你如何处理旧 iPhone?你打算出售、以旧换新还是捐赠?无论你选择哪一款&am…...

AI大模型学习三十二、飞桨AI studio 部署 免费Qwen3-235B与Qwen3-32B,并导入dify应用
一、说明 Qwen3-235B 和 Qwen3-32B 的主要区别在于它们的参数规模和应用场景。 参数规模 Qwen3-235B:总参数量为2350亿,激活参数量为220亿。Qwen3-32B:总参数量为320亿。 应用场景 Qwen3-235B:作为旗舰模型&a…...

操作系统中的设备管理,Linux下的I/O
1. I/O软件分层 I/O 层次结构分为五层: 用户层 I/O 软件设备独立性软件设备驱动程序中断处理程序硬件 其中,设备独立性软件、设备驱动程序、中断处理程序属于操作系统的内核部分,即“I/O 系统”,或称“I/O 核心子系统”。 2.用…...
炉石传说 第八次CCF-CSP计算机软件能力认证
纯链表模拟,各种操作熟知就很简单 #include<iostream> #include<bits/stdc.h> using namespace std;int n;struct role {int attack;int health;struct role* next;role() : attack(0), health(0), next(nullptr) {}role(int attack, int health) : at…...
AI应用工程师面试
技术基础 简述人工智能、机器学习和深度学习之间的关系。 人工智能是一个广泛的概念,旨在让机器能够模拟人类的智能行为。机器学习是人工智能的一个子集,它专注于开发算法和模型,让计算机能够从数据中学习规律并进行预测。深度学习则是机器学习的一个分支,它利用深度神经网…...

LabVIEW与Modbus/TCP温湿度监控系统
基于LabVIEW 开发平台与 Modbus/TCP 通信协议,设计一套适用于实验室环境的温湿度数据采集监控系统。通过上位机与高精度温湿度采集设备的远程通信,实现多设备温湿度数据的实时采集、存储、分析及报警功能,解决传统人工采集效率低、环境适应性…...

Cursor 1.0 版本 GitHub MCP 全面指南:从安装到工作流增强
Cursor 1.0 版本 GitHub MCP 全面指南:从安装到工作流增强 简介 GitHub MCP (Machine Coding Protocol) 是一种强大的工具,能够自动化代码生成、管理和分析,从而显著提升开发效率。本文将全面介绍 GitHub MCP 的安装、配置、使用以及如何将其融入您的工作流。 本文介绍两种…...

自主设计一个DDS信号发生器
DDS发生器 DDS信号发生器是直接数字频率合成技术,采用直接数字频率合成(Direct Digital Synthesis,简称DDS)技术,把信号发生器的频率稳定度、准确度提高到与基准频率相同的水平,并且可以在很宽的频率范围内进行精细的频率调节。采…...

鸿蒙UI(ArkUI-方舟UI框架)- 使用弹框
返回主章节 → 鸿蒙UI(ArkUI-方舟UI框架) 文章目录 弹框概述使用弹出框(Dialog)弹出框概述不依赖UI组件的全局自定义弹出框(openCustomDialog)(推荐)生命周期自定义弹出框的打开与关闭更新自定义弹出框内容更新自定义弹出框的属性完整示例 基础自定义弹…...

学习笔记(24): 机器学习之数据预处理Pandas和转换成张量格式[2]
学习笔记(24): 机器学习之数据预处理Pandas和转换成张量格式[2] 学习机器学习,需要学习如何预处理原始数据,这里用到pandas,将原始数据转换为张量格式的数据。 学习笔记(23): 机器学习之数据预处理Pandas和转换成张量格式[1]-CSDN博客 下面…...

在不同型号的手机或平板上后台运行Aidlux
在不同型号的手机或平板上后台运行Aidlux 一、鸿蒙/HarmonyOS手机与平板 二、小米手机与平板 三、OPPO手机与平板 四、vivo手机与平板 一、鸿蒙/HarmonyOS手机与平板 (系统版本有差异,但操作原理相通) 第一步:点击设置——应用和…...

【SSM】SpringBoot学习笔记1:SpringBoot快速入门
前言: 文章是系列学习笔记第9篇。基于黑马程序员课程完成,是笔者的学习笔记与心得总结,供自己和他人参考。笔记大部分是对黑马视频的归纳,少部分自己的理解,微量ai解释的内容(ai部分会标出)。 …...

1.企业可观测性监控三大支柱及开源方案的横评对比
[ 知识是人生的灯塔,只有不断学习,才能照亮前行的道路 ] 📢 大家好,我是 WeiyiGeek,一名深耕安全运维开发(SecOpsDev)领域的技术从业者,致力于探索DevOps与安全的融合(De…...
Neo4j图数据库管理:原理、技术与最佳实践
Neo4j作为领先的图数据库,其高效管理是发挥图计算潜力的关键。本文基于官方技术文档,深入探讨其管理原理、核心操作及生产环境最佳实践。 一、 管理架构与核心原理 多数据库架构 系统数据库 (system):管理元数据(用户、角色、权限、其他数据库信息)。标准数据库:存储实际…...