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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/pingmian/83571.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html基础01:前端基础知识学习

html基础01&#xff1a;前端基础知识学习 1.个人建立打造 -- 之前知识的小总结1.1个人简历展示1.2简历信息填写页面 1.个人建立打造 – 之前知识的小总结 1.1个人简历展示 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8&qu…

uniapp 键盘顶起页面问题

关于uniapp中键盘顶起页面的问题。这是一个在移动应用开发中常见的问题&#xff0c;特别是当输入框位于页面底部时&#xff0c;键盘弹出会顶起整个页面&#xff0c;导致页面布局错乱。 pages.json 文件内&#xff0c;在需要处理软键盘的页面添加 softinputMode 配置&#xff1…

使用 React Native 开发鸿蒙运动健康类应用的​​高频易错点总结​​

&#x1f6a8; ​​一、环境配置与工程初始化​​ ​​1. Node.js 版本冲突​​ ​​现象​​&#xff1a;DevEco Studio 报错 Unsupported Node version&#xff08;鸿蒙 RN 依赖 Node ≥18&#xff09;。​​解决​​&#xff1a; nvm install 18.16.0 # 强制锁定版本 ech…

机器学习——聚类算法

一、聚类的概念 根据样本之间的相似性&#xff0c;将样本划分到不同的类别中的一种无监督学习算法。 细节&#xff1a;根据样本之间的相似性&#xff0c;将样本划分到不同的类别中&#xff1b;不同的相似度计算方法&#xff0c;会得到不同的聚类结果&#xff0c;常用的相似度…

Python训练第四十四天

DAY 44 预训练模型 知识点回顾&#xff1a; 预训练的概念常见的分类预训练模型图像预训练模型的发展史预训练的策略预训练代码实战&#xff1a;resnet18 作业&#xff1a; 尝试在cifar10对比如下其他的预训练模型&#xff0c;观察差异&#xff0c;尽可能和他人选择的不同尝试通…

Spring Boot中保存前端上传的图片

在Spring Boot中保存前端上传的图片可以通过以下步骤实现&#xff1a; 1. 添加依赖 确保在pom.xml中已包含Spring Web依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifact…

应用层协议:HTTP

目录 HTTP&#xff1a;超文本传输协议 1.1 HTTP报文 1.1.1 请求报文 1.1.2 响应报文 1.2 HTTP请求过程和原理 1.2.1 请求过程 1、域名&#xff08;DNS&#xff09;解析 2、建立TCP连接&#xff08;三次握手&#xff09; 3、发送HTTP请求 4、服务器处理请求 5、返回H…

商务合同范本智能审核系统 AI 大模型处理方案

1. 项目概述与目标 目标: 构建一个基于AI大模型的智能合同审核系统,能够自动解析商务合同范本,识别其中的法律风险点(如权责不对等、违约金比例异常、条款模糊、缺失必要条款等),并结合企业内部合规数据库进行实时比对,提供专业的修改建议,大幅提升合同审查的效率和合…

Kafka 消息队列

一、 消息队列 1. 什么是消息队列 消息(Message)是指在应用间传送的数据。消息可以非常简单&#xff0c;比如只包含文本字符串&#xff0c;也可以更复杂&#xff0c;可能包含嵌入对象。消息队列(Message Queue)是一种应用间的通信方式&#xff0c;消息发送后可以立即返回&…

NodeJS全栈WEB3面试题——P3Web3.js / Ethers.js 使用

3.1 Ethers.js 和 Web3.js 的主要区别是什么&#xff1f; 比较点Ethers.jsWeb3.js体积更轻量&#xff0c;适合前端较大&#xff0c;加载慢&#xff0c;适合 Node文档文档简洁、现代化&#xff0c;支持 TypeScript文档丰富&#xff0c;但不够现代化模块化设计高度模块化&#x…

Ubuntu 桌面版忘记账户密码的重置方法

如果你忘记了 Ubuntu 桌面版的用户密码&#xff0c;可以通过进入恢复模式&#xff08;Recovery Mode&#xff09;来重置密码。以下是详细步骤&#xff1a; 一、进入 GRUB 引导菜单 重启计算机&#xff1a;点击关机按钮&#xff0c;选择重启。在启动时按住 Shift 键&#xff1…

全志A40i android7.1 调试信息打印串口由uart0改为uart3

一&#xff0c;概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本&#xff1a;2014.07&#xff1b; Kernel版本&#xff1a;Linux-3.10&#xff1b; 二&#xff0c;Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01)&#xff0c;并让boo…

【五子棋在线对战】二.项目结构设计 实用工具类模板的实现

项目结构设计 1.项目模块划分2.业务处理模块子模块的划分3.实用工具类模板的实现3.1 日志宏的实现3.2 mysql工具3.3 JsonCpp工具3.4 string-Split工具 && file_util工具 1.项目模块划分 ● 数据管理模块&#xff1a;依托 MySQL 数据库&#xff0c;负责用户数据的存储与…

53 python akshare(获取金融数据)

在金融数据获取与分析领域,AkShare是一个强大且灵活的开源库,它提供了丰富的金融数据接口,覆盖股票、期货、期权、基金、债券、外汇等多个金融市场。AkShare更专注于中国金融市场数据,并且支持从多个数据源获取数据,具有更高的稳定性和更全面的数据覆盖。 一、安装akshar…

蓝桥杯17114 残缺的数字

问题描述 七段码显示器是一种常见的显示数字的电子元件&#xff0c;它由七个发光管组成: 图依次展示了数字 0∼9 用七段码来显示的状态&#xff0c;其中灯管为黄色表示点亮&#xff0c;灰色表示熄灭。根据灯管的亮暗状态&#xff0c;我们可以用一个状态码(状态码是一个 7 位的…

Java观察者模式深度解析:构建松耦合事件驱动系统的艺术

目录 观察者模式基础解析核心结构与实现原理Java内置观察者实现Spring框架中的高级应用典型应用场景与实战案例观察者模式变体与优化常见问题与最佳实践总结与未来展望1. 观察者模式基础解析 1.1 模式定义与核心思想 观察者模式(Observer Pattern)是一种行为型设计模式,它…

NocoBase v1.7.0 正式版发布

原文链接&#xff1a;https://www.nocobase.com/cn/blog/nocobase-1-7-0。 新特性 用户角色并集 角色并集是一种权限管理模式&#xff0c;根据系统设置&#xff0c;系统开发者可以选择使用独立角色、允许角色并集&#xff0c;或者仅使用角色并集&#xff0c;以满足不同的权限…

破解通信难题,modbus转profibus网关在高炉水冲渣系统中稳定好用

基于在高炉水冲渣传动监控系统的工艺背景下,稳联技术Profibus-Modbus网关在控制系统中使支持Profibus协议的设备与支持Modbus RTU协议的设备之间进行通讯协议转换的作用,使得支持不同通讯协议的设备之间能够进行数据传递,并且给出了设计方法.应用Profibus-Modbus总线桥WL-ABD30…

开源是什么?我们为什么要开源?

本片为故事类文章推荐听音频哦 软件自由运动的背景 梦开始的地方 20世纪70年代&#xff0c;软件行业处于早期发展阶段&#xff0c;软件通常与硬件捆绑销售&#xff0c;用户对软件的使用、修改和分发权利非常有限。随着计算机技术的发展和互联网的普及&#xff0c;越来越多的开…

Educational Codeforces Round 179 (Rated for Div. 2)(A-E)

题目链接&#xff1a;Dashboard - Educational Codeforces Round 179 (Rated for Div. 2) - Codeforces A. Energy Crystals 思路 贪心地模拟一下过程很容易就看出来了&#xff0c;每次变成尽可能大的数 1 1 0 -> 1 1 3 -> 3 3 5 -> 5 5 11....我们只需要关注最大…