【Java并发编程六】多线程越界问题
ArrayList()越界错误
import java.util.ArrayList;
public class myTest implements Runnable {static ArrayList<Integer> a = new ArrayList<>(10);public static void main(String[] args) throws InterruptedException {Thread t1 = new Thread(new myTest());Thread t2 = new Thread(new myTest());t1.start();t2.start();t1.join();t2.join();System.out.println(a.size());}@Overridepublic void run() {for(int i=0; i<10000; i++) {a.add(i);}}
}
上面的代码会有三种可能的运行结果:
①越界。因为List的add方法会先检查list是否足够,从而选择扩容,若第一个线程刚刚扩容完毕,还未添加,第二个线程就进行了检查,从而导致list越界。
②正常结果。结果为20000。
③异常结果。这是因为两个线程同时对i的值进行修改。
HashMap
HashMap也会出现上述情况。
解决措施
使用synchronized修饰方法。
import java.util.ArrayList;
public class myTest implements Runnable {static ArrayList<Integer> a = new ArrayList<>(10);public static void main(String[] args) throws InterruptedException {Thread t1 = new Thread(new myTest());Thread t2 = new Thread(new myTest());t1.start();t2.start();t1.join();t2.join();System.out.println(a.size());}public static synchronized void func() {for(int i=0; i<10000; i++) {a.add(i);}}@Overridepublic void run() {func();}
}
相关文章:
【Java并发编程六】多线程越界问题
ArrayList()越界错误 import java.util.ArrayList; public class myTest implements Runnable {static ArrayList<Integer> a new ArrayList<>(10);public static void main(String[] args) throws InterruptedException {Thread t1 new Thread(new myTest());T…...
聊聊httpclient的disableConnectionState
序 本文主要研究一下httpclient的disableConnectionState disableConnectionState org/apache/http/impl/client/HttpClientBuilder.java /*** Disables connection state tracking.*/public final HttpClientBuilder disableConnectionState() {connectionStateDisabled t…...
Tomcat web.xml文件中的mime-mapping
在Tomcat安装目录的conf/web.xml文件中,定义了大量的<mime-mapping>元素,例如: 其中<extension>指定了文件的扩展名,<mime-type>指定了mime类型,放在<mime-mapping>元素中,就是将…...
【Java 进阶篇】JQuery 事件绑定:`on` 与 `off` 的奇妙舞曲
在前端开发的舞台上,用户与页面的互动是一场精彩的表演。而 JQuery,作为 JavaScript 的一种封装库,为这场表演提供了更为便捷和优雅的事件绑定方式。其中,on 和 off 两位主角,正是这场奇妙舞曲中的核心演员。在这篇博客…...
模块化Common JS 和 ES Module
目录 历程 1.几个函数:全局变量的污染,模块间没有联系 2.对象:暴露成员,外部可修改 3.立即执行函数:闭包实现模块私有作用域 common JS module和Module 过程 模块依赖:深度优先遍历、父 -> 子 -…...
基于java web个人财务管理系统
末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…...
soc估计:DESIGN AND DEVELOPMENT OF SoC ESTIMATION MODEL USING MACHINE LEARNING
这是一篇印度那边学生的毕业论文,唯一要记录的是里面提到了一个特征构造的思想,记录如下: 论文思想: 特征选用速度、电流、电压、温度、平均电压、平均电流、平均速度,模型用cnnlstmlrlr 平均特征计算方式:…...
2、LeetCode之两数相加
给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字0之外,这两个数都不会以0开头。 输入&am…...
redis三种集群方式
redis有三种集群方式:主从复制,哨兵模式和集群。 1.主从复制 主从复制原理: 从服务器连接主服务器,发送SYNC命令; 主服务器接收到SYNC命名后,开始执行BGSAVE命令生成RDB文件并使用缓冲区记录此后执行的所…...
Java --- JVM之垃圾回收相关算法
目录 一、垃圾标记算法 1.1、垃圾标记阶段:对象存活判断 1.2、引用计数算法 1.3、可达性分析算法 1.4、GC Roots 二、对象的finalization机制 2.1、生存还是死亡? 三、查看GC Roots 3.1、使用MAT查看 四、使用JProfiler分析OOM 五、清除阶段算…...
CentOS 7.9 安装 nginx
系统版本 # cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core)搜索nginx相关的软件包 yum search nginx显示已安装的与 “nginx” 相关的软件包 yum list | grep nginx列出可用的 Nginx 软件包 yum list nginx --showduplicates安装 Nginx yum install -y ng…...
Newman
近期在复习Postman的基础知识,在小破站上跟着百里老师系统复习了一遍,也做了一些笔记,希望可以给大家一点点启发。 一)如何安装Newman 1、下载并安装NodeJs 在官网下载NodeJs: Download | Node.js(官网的…...
Transformer中WordPiece/BPE等不同编码方式详解以及优缺点
❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…...
Ubuntu20.04安装Beyond Compare 4.4.7
参考链接: 1.Ubuntu20.04 Beyond Compare 4.3.7 安装 2.Ubuntu20.04安装Beyond Compare 4.3.7...
制作含有音频、视频的网页
参考代码如下 <!DOCTYPE html> <html> <head><title>视频音乐网页</title> </head> <body><!-- 视频 --><video width"320" height"240" controls><source src"movie.mp4" type"…...
QPair的介绍及用法
QPair是一个模板类,它存储一对值(key,value),可以是不同的数据类型。QPair的用法有以下几个方面: QPair的构造函数有以下几种形式: QPair():默认构造函数,创建一个空的QP…...
掌握未来技术趋势,Python编程引领人工智能时代
掌握未来技术趋势,Python编程引领人工智能时代 摘要:Python作为一种高级编程语言,在人工智能领域中扮演着越来越重要的角色。本文将通过介绍Python编程的特点、应用场景及发展前景,展望Python未来的发展趋势,并结合代…...
【自留地】后端 - PHP - MySQL - Nginx - Python - Java
PHP ThinkPHP6入门手册 【精选】【汇总】ThinkPHP6入门手册_tp6手册_Rudon滨海渔村的博客-CSDN博客文章浏览阅读5.4k次。安装安装Composer【win】https://getcomposer.org/Composer-Setup.exe【Linux & MacOS】curl -sS https://getcomposer.org/installer | phpmv compo…...
网页视频下载工具 iTubeGo mac中文版软件特色
iTubeGo YouTube Downloader mac是一款功能强大的YouTube视频下载工具。 iTubeGo YouTube Downloader mac软件特色 多种格式支持:iTubeGo YouTube Downloader可以将YouTube视频下载为多种常见的视频和音频格式,包括MP4、MP3、AVI、FLV、MOV、WMV等&…...
深度学习入门(第三天)——卷积神经网络
一、卷积神经网络应用领域 CV领域发展: 比赛中预测错误率的百分比,每年逐步下降。Human是人类肉眼的识别能力,2016年开始已经远高于人类肉眼死别能力,后面就取消了该方向的比赛了。 检测任务: 分类与检索:…...
给Llama-3-8B-Instruct加个‘垫片’:手把手教你安全添加Pad Token并微调(附完整代码)
为Llama-3-8B-Instruct安全添加Pad Token的工程实践指南当你在微调Llama-3-8B-Instruct时,是否遇到过这样的困扰:模型没有提供Pad Token,导致数据处理和训练过程中出现各种不便?这个问题看似简单,实则暗藏玄机。本文将…...
【深度解析】从 Mythos 到 DeepSeek 降价:大模型工程化选型、成本控制与 API 实战
摘要 近期 AI 大模型市场持续加速迭代:Anthropic Mythos 进入部署测试信号增强,OpenAI、Gemini 系列持续升级,DeepSeek 则通过永久降价重塑开发成本结构。本文从工程视角解析模型发布信号、Agentic 系统成本模型,并给出 OpenAI 兼…...
为什么 AI 框架几乎全选 Python,而不选 C#?| 技术深度分析
关键词:Python AI、C# AI开发、PyTorch、Semantic Kernel、Microsoft Agent Framework、ML.NET这不是 C# 的失败,而是一场"不公平竞争"的历史必然。先看数据:Python 在 AI 领域有多统治?不是我吹,数据摆在这…...
卖电机怎么找客户?下游工厂在哪里
卖电机找客户,本质是找用电机的下游工厂,核心难点是拿到这些下游厂的名单和联系方式。展会遇到的多半是同行,百度搜来的多半是询价投机客,真正批量采购电机的工厂躲在各地产业带里,不主动露面。这篇从下游映射、传统渠…...
李飞飞团队新作ESI-Bench:具身智能的ImageNet来了!
点击下方卡片,关注“CVer”公众号AI/CV重磅干货,第一时间送达【具身智能】微信群成立!大家快扫码加入具身星球,将获得:最新具身智能技术和项目、❤️ 从入门到精通的学习路线、🤖 具身智能招聘(实习/校招/社…...
深度解析sguard_limit:ACE-Guard内核级资源限制器的架构设计与性能优化
深度解析sguard_limit:ACE-Guard内核级资源限制器的架构设计与性能优化 【免费下载链接】sguard_limit 限制ACE-Guard Client EXE占用系统资源,支持各种腾讯游戏 项目地址: https://gitcode.com/gh_mirrors/sg/sguard_limit 在腾讯游戏生态中&…...
为何AI Agent运行频繁异常,生产级智能体缺失的核心工程支撑
当下AI Agent技术热度持续攀升,不少开发者借助主流框架快速搭建出智能体程序,基础问答,简易工具调用都可以顺畅运行。可一旦落地到真实业务场景,处理多步骤复杂任务时,Agent就容易出现各类失控问题,调用逻辑…...
漫画阅读新体验:JHenTai如何让你在五大平台无缝畅读E-Hentai内容?
漫画阅读新体验:JHenTai如何让你在五大平台无缝畅读E-Hentai内容? 【免费下载链接】JHenTai A cross-platform manga app made for e-hentai & exhentai by Flutter 项目地址: https://gitcode.com/gh_mirrors/jh/JHenTai 还在为在不同设备上…...
GIF动画处理工具Gifsicle:如何高效优化与管理动态图像资源
GIF动画处理工具Gifsicle:如何高效优化与管理动态图像资源 【免费下载链接】giflossy Merged into Gifsicle! 项目地址: https://gitcode.com/gh_mirrors/gi/giflossy Gifsicle是一个专为GIF动画处理而设计的命令行工具套件,它提供了完整的GIF文件…...
RAG增强检索在AIGC工作流中的实战:从文档解析到向量召回全流程
系列导读 你现在看到的是《从0到1构建AIGC工作流自动化平台:架构、实践与运维全指南》的第 3/10 篇,当前这篇会重点解决:让读者掌握RAG从理论到代码的完整落地流程,并学会在工作流中优雅复用。 上一篇回顾:第 2 篇《搭建你的第一个AIGC工作流:基于LangChain实现多步链式…...
