生产问题: 利用线程Thread预加载数据缓存,其它类全局变量获取缓存偶发加载不到
生产问题: 利用线程Thread预加载数据缓存偶发加载不到
先上代码
public class ThreadTest {//本地缓存Map<String, Object> map = new HashMap<String, Object>();class ThreadA implements Runnable{@Overridepublic void run() {System.out.println("ThreadA");initCache();}}//加载缓存void initCache(){for (int i = 0; i < 5; i++) {map.put(String.valueOf(i),i);}}void ThreadTestStart(){for (int i = 0; i < 10; i++) {Thread threadA = new Thread(new ThreadA());threadA.setName("threadA"+i);//threadA.setPriority(10);//设置优先级threadA.start();System.out.println(threadA.getName());}}void getCacheByKey(String key){Object value = map.get(key);System.out.println("key:"+key+"-value:"+value);}public static void main(String[] args) {try {ThreadTest threadTest = new ThreadTest();threadTest.ThreadTestStart();//Thread.sleep(500);//睡眠500毫秒等待可以拿到数据threadTest.getCacheByKey("1");} catch (Exception e) {e.printStackTrace();}}
}
利用线程去加载缓存的时候, 线程start() 不一定立即执行, 要等分配时间片,
线程启动后,在这个时候去获取数据时会拿不到数据

睡眠一下
本人在生产的场景是这样子的(一个运行了十年的老项目)
一个bean实现了 BeanPostProcessor 接口,重写 postProcessAfterInitialization() 方法来加载缓存 initCache , 这个加载方法是新建了一个线程Thread 并启动start() , 这个本地缓存在Controller的全局变量中获取使用, 导致启动项目时会偶发报错 ( 取决于加载缓存的线程能不能拿到时间片去执行run()方法从而加载缓存 ) , 可能是这个线程的优先级不高, 然后就设置了优先级为最大 setPriority(10) , 默认的优先级是5
相关文章:
生产问题: 利用线程Thread预加载数据缓存,其它类全局变量获取缓存偶发加载不到
生产问题: 利用线程Thread预加载数据缓存偶发加载不到 先上代码 public class ThreadTest {//本地缓存Map<String, Object> map new HashMap<String, Object>();class ThreadA implements Runnable{Overridepublic void run() {System.out.println("Thread…...
Elasticsearch mapping 之 性能相关配置
ES 常见类型 通用类型: 二进制: binary 布尔型: boolean 字符串: keyword, constant_keyword, wildcard, text 别名: alias 对象: object, flattened, nested, join 结构化数据类型: Range, ip, version, murmur3 空间数据类型: geo_point, geo_shape, point, shape 性…...
adb push报错:remote couldn‘t create file: Is a directory
adb push报错:remote couldn‘t create file: Is a directory 出现这个问题可能是电脑本地目录中包含中文或者是目录地址中多包含了一个/ 比如说以下两种路径 1. test/测试音频文件1/a.mp3 2.test/test_audio/ 这两种都是不可以的(我是在as中执行的…...
GitLab 服务更换了机器,IP 地址或域名没有变化时,可能会出现无法拉取或提交代码的情况。
当 GitLab 服务更换了机器,但 IP 地址或域名没有变化时,可能会出现无法拉取或提交代码的情况。 这可能是由于 SSH 密钥或 SSL 证书发生了变化。以下是一些可能的解决步骤: 这可能是由于 SSH 密钥或 SSL 证书发生了变化。以下是一些可能的解决…...
【华为OD题库-076】执行时长/GPU算力-Java
题目 为了充分发挥GPU算力,需要尽可能多的将任务交给GPU执行,现在有一个任务数组,数组元素表示在这1秒内新增的任务个数且每秒都有新增任务。 假设GPU最多一次执行n个任务,一次执行耗时1秒,在保证GPU不空闲情况下&…...
持续集成交付CICD:Jenkins使用GitLab共享库实现前后端项目Sonarqube
目录 一、实验 1.Jenkins使用GitLab共享库实现后端项目Sonarqube 2.优化GitLab共享库 3.Jenkins使用GitLab共享库实现前端项目Sonarqube 4.Jenkins通过插件方式进行优化 二、问题 1.sonar-scanner 未找到命令 2.npm 未找到命令 一、实验 1.Jenkins使用GitLab共享库实现…...
Linux文件结构与文件权限
基于centos了解Linux文件结构 了解一下文件类型 Linux采用的一切皆文件的思想,将硬件设备、软件等所有数据信息都以文件的形式呈现在用户面前,这就使得我们对计算机的管理更加方便。所以本篇文章会对Linux操作系统的文件结构和文件权限进行讲解。 首先…...
CentOS上安装和配置Apache HTTP服务器
在CentOS系统上安装和配置Apache HTTP服务器可以为您的网站提供可靠的托管环境。Apache是开源的Web服务器软件,具有广泛的支持和强大的功能。下面是在CentOS上安装和配置Apache HTTP服务器的步骤: 步骤一:安装Apache HTTP服务器 打开终端&am…...
前端知识(十二)———ES6迭代器
ES6中的迭代器是一种新的对象,它具有一个next()方法。next()方法返回一个对象,这个对象包含两个属性:value和done。value属性是迭代器中的下一个值,done属性是一个布尔值,表示迭代器是否已经遍历完所有的值。迭代器是一…...
云端仓库平台
SpringBoot MySQL Vue 等技术实现的云端仓库 技术栈 核心框架:SpringBoot 持久层框架:MyBatis-Plus 前端框架:Vue 数据库:MySQL 项目包含源码和数据库文件。 效果图如下:...
php第三方skd自动加载
把mugou-sdk复制到项目下在composer.josn找到classmap加入sdk "autoload": {"classmap": ["mugou-sdk"] },在composer.josn找到files加入sdk "autoload": {"files":[mugou-sdk] },项目目录下运行 composer dump-autoload…...
Golang channle(管道)基本介绍、快速入门
channel(管道)-基本介绍 为什么需要channel?前面使用全局变量加锁同步来解决goroutine的通讯,但不完美 1)主线程在等待所有goroutine全部完成的时间很难确定,我们这里设置10秒,仅仅是估算。 2)如果主线程休眠时间长了,…...
盘点六款颇具潜力的伪原创AI工具
写作作为信息传递的主要媒介,在庞大的信息海洋中,为了在激烈的竞争中脱颖而出,伪原创AI工具成为越来越多写手的神秘利器。在本文中,我们将深入盘点六款颇具潜力的伪原创AI工具,为你揭开它们神秘的面纱。 1. 文心一言 …...
基于SSM的健身房预约系统设计与实现
末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…...
postgresql自带指令命令系列二
简介 在安装postgresql数据库的时候会需要设置一个关于postgresql数据库的PATH变量 export PATH/home/postgres/pg/bin:$PATH,该变量会指向postgresql安装路径下的bin目录。这个安装目录和我们在进行编译的时候./configure --prefix [指定安装目录] 中的prefix参…...
ABAP - Function ALV 02 简单开发一个Function ALV
了解Function ALV: https://blog.csdn.net/HeathlX/article/details/134879766?spm1001.2014.3001.5501程序开发步骤:① TCODE:SE38创建程序 ② 编写程序 DATA gt_spfli TYPE TABLE OF spfli.** Layout 变量定义 (固定使用 直接粘贴复制即可) DATA gs…...
IDEA启动失败报错解决思路
IDEA启动失败报错解决思路 背景:在IDEA里安装插件失败,重启后直接进不去了,然后分析问题解决问题的过程记录下来。方便下次遇到快速解决。也是一种解决问题的思路,分享出去。 启动报错信息 Internal error. Please refer to https…...
密码学学习笔记(二十三):哈希函数的安全性质:抗碰撞性,抗第一原象性和抗第二原象性
在密码学中,哈希函数是一种将任意长度的数据映射到固定长度输出的函数,这个输出通常称为哈希值。理想的哈希函数需要具备几个重要的安全性质,以确保数据的完整性和验证数据的来源。这些性质包括抗碰撞性、抗第一原象性和抗第二原象性。 抗碰…...
STM32-GPIO编程
一、GPIO 1.1 基本概念 GPIO(General-purpose input/output)通用输入输出接口 --GP 通用 --I input输入 --o output输出 通用输入输出接口GPIO是嵌入式系统、单片机开发过程中最常用的接口,用户可以通过编程灵活的对接口进行控制,…...
Go语言基础知识学习(一)
Go基本数据类型 bool bool型值可以为true或者false,例子: var b bool true数值型 类型表示范围int8有符号8位整型-128 ~ 127int16有符号16位整型-32768 ~ 32767int32有符号32位整型-2147783648 ~ 2147483647int64有符号64位整型uint8无符号8位整型0 ~ 255uint16…...
3分钟掌握PlantUML Editor:用代码思维绘制专业UML图表的终极指南
3分钟掌握PlantUML Editor:用代码思维绘制专业UML图表的终极指南 【免费下载链接】plantuml-editor PlantUML online demo client 项目地址: https://gitcode.com/gh_mirrors/pl/plantuml-editor 还在为复杂的UML图表绘制而烦恼吗?传统的拖拽式绘…...
Unity Android性能分析:Method Tracing精准定位C#卡顿根因
1. 这不是“点一下就出报告”的玩具,而是Unity Android性能问题的显微镜Method Tracing在Unity Android项目里,常被误认为是“打开Profiler点Record就能用”的快捷功能。我见过太多团队在发布前夜发现卡顿,手忙脚乱点开Unity Profiler的CPU U…...
GPT5.5每次推理只激活部分参数MoE路由策略完整拆解
做多模型架构对比测试时用了cc.877ai.cn这个AI模型聚合平台,一站接入多个模型方便对比不同架构策略在实际任务中的表现差异。GPT-5.5是OpenAI首个从零完整重训的基础模型。大多数人关注"变强了多少"但更值得关注的是"怎么变强的"。MoE路由策略是…...
1987年4月26日下午15-17点出生性格、运势和命运
1987年4月24日晚上出生的人,如今已步入38岁的门槛。在职业生涯中,这是一个承上启下的关键阶段——既脱离了职场新人的青涩,又尚未到达管理者或专家的巅峰位置。从非命理的角度分析,他们的事业运势与时代变迁、个人选择和社会结构密…...
老服务器CPU不支持x86-64-v2?手把手教你降级Hasura v2.24.0成功避坑
老服务器CPU不支持x86-64-v2?手把手教你降级Hasura v2.24.0成功避坑 当你在老旧服务器上部署Hasura时,突然遭遇"CPU does not support x86-64-v2"的错误提示,这可能是最令人沮丧的时刻之一。这种情况通常发生在使用较老CPU架构的物…...
保姆级教程:用H3C设备搭建星型(Hub-Spoke)IPsec VPN,实现分支互访
企业级星型IPsec网络架构实战:基于H3C设备的Hub-Spoke模型部署指南 当企业业务规模从单一总部扩展到多分支机构时,网络架构的复杂性和安全性需求呈指数级增长。某零售企业在全国部署300家门店后,发现传统的点对点网络连接方式导致设备配置量激…...
SpringBoot+Vue体育赛事志愿者管理系统源码+论文
代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹 分享万套开题报告任务书答辩PPT模板 作者完整代码目录供你选择: 《SpringBoot网站项目》1800套 《SSM网站项目》1500套 《小程序项目》1600套 《APP项目》1500套 《Python网站项目》…...
scikit-learn自定义Pipeline:从接口契约到业务落地的完整实践
1. 项目概述:为什么需要自己动手定制 scikit-learn 的模型与流水线在真实的数据科学项目里,你几乎不可能靠from sklearn.ensemble import RandomForestClassifier一行代码就搞定所有事。我带过十几个工业级建模项目,从电商价格预测到医疗设备…...
容器编排:Kubernetes高级调度策略
容器编排:Kubernetes高级调度策略 大家好,我是欧阳瑞(Rich Own)。今天想和大家聊聊Kubernetes高级调度策略这个重要话题。作为一个全栈开发者,Kubernetes已经成为容器编排的标准。今天就来分享一下Kubernetes的高级调…...
认知通量(CT):用语义带宽、时序保真度与概念熵减重构AI训练评估
1. 项目概述:这不是又一个“大模型参数秀”,而是一次对AI认知边界的重新测绘“From 1T Tokens to Total Cognition: The Numbers Behind the New AI Brain…”——这个标题里没有一个生僻词,但组合在一起,却像一把钥匙,…...
