JAVAEE初阶多线程(4)

news2024/9/21 7:59:10

在前面的文章中简单的概述了线程的基本定义接下来就是线程的最后完结了。

1.工厂模式

1.1工厂模式的简单定义

(1)在java jar包中有一个工厂模式这是一种设计模式

(2)这个设计模式是为了更好的解决构造方法创建对象太坑了的问题,这个相当于提前已经东西给做好了,你直接用就行了

(3)这个就是提前已经把线程中的属性已经构造好了,其实我们在设计开发中还是用线程池和工厂模式结合然后进行使用的。

2.2工厂模式的格式

 

如果我们想用就直接嗲用这个方法就行了。 

如果语法层面上不强制要求构造方法和类名一样就没有上述要求的必要了。

2.线程池的参数问题

其实在前面文章中提到的线程池参数,什么线程不够就队列扩容,满了就创建新的线程等等其实都是不太合适的,最合适的情况其实是一种拒绝策略,就好比说,你们食堂打饭人太多了你先出把食堂拆了?当然不是而是用一种拒绝的策略。

最常见的几种策略

总结

 3.定时器(Timer)

1.在java的线程中Runnable方法,一个方法可以控制这个线程在啥时候开始执行。

这个任务不会立即执行,而是在时间到达以后再去执行

2.这个定时器就像短信验证码,当这个定时结束以后就会再执行一格任务。

3.自己实现定时器

4.为了能够定时多个任务,我们还可以结合数据结构来将定时的任务存储到优先级队列中去。

5.这时候当定时器到时间以后,我们就需要来写一个东西来执行这个线程的任务

代码

 6.核心问题

代码写到这里有两个问题

(1)代码是否需要阻塞等待

(2)这时候我们需要用wait来进行等待

这里不能使用sleep来进行休眠,这个休眠时真的休眠了,压根唤醒不了,wait操作可以用notify操来进行唤醒。

其中sleep虽然能用interrupt来唤醒但是我们不是特别推荐用这个方法来对其唤醒。

原因

其他注意事项

 4.第二种

一把锁搞定定时器

(1)知识扩展

  • "test.get time" 可能是执行某个测试(test)操作并记录其开始时间。
  • "cur.time" 可能是获取当前的系统时间或者当前时间戳。
  • 执行 "test.get time - cur.time" 可能是用于计算测试操作执行所花费的时间,即测试开始时刻到当前时间的时间差。

 其中currentTimeMillis是用来获取当前时间的时间戳的。

4.总结

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

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

相关文章

安卓开发:相机水印设置

1.更新水印 DecimalFormat DF new DecimalFormat("#"); DecimalFormat DF1 new DecimalFormat("#.#");LocationManager LM (LocationManager)getSystemService(Context.LOCATION_SERVICE); LM.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2…

urllib_post请求_百度翻译之详细翻译

百度翻译有一个详细翻译的接口: post请求: 请求参数(较多): 打印之后,发现有问题: 改一下请求头: 将Accept-Encoding注释掉,因为我们使用的是utf-8编码: 加上…

解决:LVGL+GUI Guider 1.7.2运行一段时间就会卡死死机,内存泄露溢出的问题

概括: 我在使用NXP官方GUI Guider生成的代码出现了内存泄漏的问题。但我遇到的并不是像其他人所说的style的问题,如下链接。而是因为在页面渲染之前就使用了该页面内的组件,内存就会不断增加。 LVGL 死机 内存泄漏_lvgl 内存溢出-CSDN博客 运…

..堆..

堆 堆是完全二叉树,即除了最后一列之外,上面的每一层都是满的(左右严格对称且每个节点都满子节点) 最后一列从左向右排序。 默认大根堆:每一个节点都大于其左右儿子,根节点就是整个数据结构的最大值 pr…

【Telemac】Telemac相关报错记录

文章目录 1.下载BlueKenue后缀为man解决办法2.运行Telemac项目提示Fortran报错解决办法1.下载BlueKenue后缀为man BlueKenue官方下载链接: 可以看到下载器请求时出现了问题,下载BlueKenue后缀为man. 解决办法 修改下载后的文件后缀为msi即可 2.运行Telemac项目提示Fortr…

视频号小店怎么进入优选联盟?入驻优选联盟都有什么条件?

大家好,我是电商花花。 视频号小店想要出单、爆单,不管在流量上还是销量都离不开达人带货,因为目前视频号小店上基本上就没有自然流量,想出单只能做达人带货。 而视频号小店想要找达人带货,必须是企业店铺&#xff0…

C++基础与深度解析 | 泛型算法 | bind | Lambda表达式

文章目录 一、泛型算法1.泛型算法的分类2.迭代器分类 二、bind与lambda表达式1.bind2.lambda表达式 三、泛型算法的改进--ranges(c20) 一、泛型算法 C中的泛型算法是标准模板库(STL)的一部分(这里重点讨论 C 标准库中定义的算法,而…

转置卷积简明教程

转置卷积层也被(错误地)称为反卷积层。反卷积层反转了标准卷积层的操作,即如果对通过标准卷积层生成的输出进行反卷积,则会返回原始输入。转置卷积层与反卷积层相似,因为两者生成的空间维度相同。转置卷积不是通过值反…

【闲聊】-Chrome DevTools简介与启动方法

Chrome DevTools简介与启动方法 Chrome DevTools是Chrome浏览器内置的一套网页开发调试工具,适用于前端开发人员。以下是如何启动DevTools以及各个面板的功能列表。 如何启动Chrome DevTools 快捷键启动: 在Windows/Linux上,按 F12 或 Ctrl…

1.手动LogisticRegression模型的训练和预测

通过这个示例,可以了解逻辑回归模型的基本原理和训练过程,同时可以通过修改和优化代码来进一步探索机器学习模型的训练和调优方法。 过程: 生成了一个模拟的二分类数据集:通过随机生成包含两个特征的数据data_x,并基于一定规则生…

博客说明 5/12~5/24【个人】

博客说明 5/12~5/24【个人】 前言版权博客说明 5/12~5/24【个人】对比最后 前言 2024-5-24 13:39:23 对我在2024年5月12日到5月24日发布的博客做一下简要的说明 以下内容源自《【个人】》 仅供学习交流使用 版权 禁止其他平台发布时删除以下此话 本文首次发布于CSDN平台 作…

从浮点数定义到FP8: AI模型中不同的数据类型

背景:AI模型中不同的数据类型对硬件算力和内存的需求是不同的,为了提高模型在硬件平台的吞吐量,减少数据通信带宽需求,往往倾向于将高位宽数据运算转向较低位宽的数据运算。本文通过重新回顾计算机中整数和浮点数的定义&#xff0…

SQL面试题练习 —— 连续支付订单合并

目录 1 题目2 建表语句3 题解 1 题目 现有一张用户支付表:t_user_pay 包含字段订单ID,用户ID,商户ID,支付时间,支付金额。 如果同一用户在同一商户存在多笔订单,且中间该用户没有其他商户的支付记录&#…

JMeter学习笔记二

面试题: 1.做接口测试时,你是怎么做的数据校验(返回值验证)?一般你会验证哪些数据? 校验code 200(说明后端接到了你的请求,并且给了应答) 返回信息 sucess 2.有1w个用户名密码需要登录&#xff…

colmap在windows上编译好的程序直接可以运行支持cuda

1.colamp简介 COLMAP 是一种通用的运动结构 (SfM) 和多视图立体 (MVS) 管道,具有图形和命令行界面。它为有序和无序图像集合的重建提供了广泛的功能。 2.数据采集 手机或者相机 绕 物体拍一周,每张的角度不要超过30(保证有overlap区域&#…

梦幻西游手游挂机脚本,搬砖挂机赚米项目,号称单窗口日收益60+(教程+软件)

一、项目背景 随着智能手机的普及,手游市场逐渐成为人们娱乐生活的重要组成部分。其中,《梦幻西游》作为一款经典的国产手游,吸引了大量的玩家。然而,许多玩家因为工作、学习等原因,无法长时间在线游戏。因此&#xf…

《计算机网络微课堂》3-11 虚拟局域网 VLAN

本节课我们介绍虚拟局域网 VLAN 的基本概念。 ‍ 3.11.1 虚拟局域网 VLAN 概述 在之前课程中我们已经介绍过了以太网交换机自学习和转发帧的流程,‍‍以及为避免网络环路而产生的生成树协议。 以太网交换机工作在数据链路层,‍‍也包括物理层&#xf…

兴业证券 | 哪些行业在提价?

一方面, 部分行业年初以来PPI价格整体上涨,4月进一步提价;另一方面,部分行业年初以来PPI价格整体下跌或者涨幅不高,但4月开始出现边际提升。 前言:年初以来,“提价”是一条重要的投资线索。我们…

【找出满足差值条件的下标 I】python

目录 暴力题解 优化:滑动窗口维护大小值 暴力题解 class Solution:def findIndices(self, nums: List[int], indexDifference: int, valueDifference: int) -> List[int]:nlen(nums)for i in range(n):for j in range(n-1,-1,-1):if abs(i-j)>indexDiffere…

千亿级开源大模型Qwen110B部署实测

近日,通义千问团队震撼开源 Qwen1.5 系列首个千亿参数模型 Qwen1.5-110B-Chat。 千亿级大模型普通显卡是跑不了推理的,普通人一般也没办法本地运行千亿级大模型。 为了探索千亿级大模型到底需要计算资源,我用云计算资源部署了Qwen1.5-110B-…