线程的状态,线程不安全的原因

一、线程有以下几种状态:

(1)NEW Thread 对象创建好了,但是还没有调用start方法在系统中创建线程

(2)TERMINATED Thread对象仍然存在,但是系统内部线程已经执行完毕

(3)RUNNABLE 就绪状态

(4)TIMED_WAITING 指定时间阻塞,到达一定时间就自动解除,使用sleep会进入这个状态,使用带有超时的join也会

(5)WAITING 不带时间的阻塞(死等)到达某个程度才会解除,Join或者wait都会进入WAITING

(6)BLOCKED 由于锁竞争,引起的阻塞

二、线程不安全的原因:

1、根本原因:操作系统的线程是抢占式执行和随机调度的,这给线程执行间带来了很多的变数

2、代码结构 代码中多个线程,同时修改同一个变量(出事儿)

(1)一个线程修改一个变量没事

(2)多个线程读取同一个变量没事

(3)多个线程修改同一个变量没事

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

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

相关文章

【QT QML】软件打包,生成安装包

一、版本 Desktop 5.15.2 MinGW 64-bit二、打包 1. 编译Release版本 2. 在工程目录下找到Realse文件夹 3. 拷贝文件 ***-Desktop_Qt_5_15_2_MinGW_64_bit-Release - release - xxx.exe到一个新文件夹中 4. 开启相应打包工具(根据自己的编译器和版本选择&#xff0…

Maven的下载安装配置教程

一、简单了解一下什么是Maven Maven就是一款帮助程序员构建项目的工具,我们只需要告诉Maven需要哪些Jar 包,它会帮助我们下载所有的Jar,极大提升开发效率。 1.Maven翻译为“专家“, ”内行”的意思,是著名Apache公司下…

Global Gamers Challenge | 与 Flutter 一起保护地球

作者 / Kelvin Boateng 我们知道 Flutter 开发者热爱挑战,因此我们很高兴地宣布,新一轮的 Flutter 挑战赛来了! 挑战https://flutter.cn/events/puzzle-hack Global Gamers Challenge 是一项为期 8 周的比赛,参赛者需要设计、构建…

C#上位机与三菱PLC的通信09---开发自己的通讯库(A-3E版)

1、A-3E报文回顾 具体细节请看: C#上位机与三菱PLC的通信05--MC协议之QnA-3E报文解析 C#上位机与三菱PLC的通信06--MC协议之QnA-3E报文测试 2、为何要开发自己的通讯库 前面开发了自己的A-1E协议的通讯库,实现了数据的读写,对于封装的通…

头疼管理 MySQL 数据库 Schema?开源工具大盘点!

MySQL 是世界上最流行的开源关系型数据库管理系统 (RDBMS),但是对 MySQL 数据库做 schema 变更 (schema migration) 还是有点难搞的😅。 本文中,我们盘点一些好用的针对 MySQL 的开源数据库 schema 迁移工具,简单聊一下它们提供的…

Jenkins CI/CD 流程

Jenkins CI/CD 流程 这张图稍微更形象一点,上线之前先把代码git到版本仓库,然后通过Jenkins将Java项目通过maven去构建,这是在非容器之前,典型的自动化的一个版本上线流程。那它有哪些问题呢? 如:它的测试环…

Stable Diffusion——常用插件安装与测试(一)

前言 随着Stable Diffusion不断演进,越来越多的开发者开始涉足插件开发。尽管网络上存在大量教程,但它们通常零散分布,逐个学习和查找非常耗时,使人感觉每天都在劳累思考。这里总结了Stable Diffusion常用的插件安装与测试方法。…

Linux篇:开发工具yum/vim/gcc/g++/Makefile/gdb

一. yum:软件包管理器 什么是软件包? 在Linux 下安装软件 , 一个通常的办法是下载到程序的源代码 , 并进行编译 , 得到可执行程序 . 但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好 , 做成软件包 (可以理解成windows 上的安装程序) 放在…

Tomcat 学习之 Servlet

目录 1 Servlet 介绍 2 创建一个 Servlet 3 web.xml 介绍(不涉及 filter 和 listener 标签) 3.1 display-name 3.2 welcome-file-list 3.3 servlet 3.4 session-config 3.5 error-page 4 Tomcat 如何根据 URL 定位到 Servlet 5 执行 Servlet …

Web基础②nginx搭建与配置

目录 一.Nginx概述 1.定义 2.Nginx模块作用 (1)main模块 (2)stream服务模块 (3)邮件服务模块 (4)第三方模块 (5)events模块 (6&#xff…

STM32cubeMX配置FreeRTOS----互斥量

这篇文章为大家介绍FreeRTOS里的 互斥锁。 文章目录 前言一、互斥量的概念二、STM32cubeMX配置互斥量三、相关函数1. 创建互斥量2. 获取互斥量3. 释放互斥量 四、使用互斥量访问共享资源五、递归互斥锁在RTOS里互斥锁是谁获取,谁就释放吗? 总结 前言 一、…

MySQL引擎对决:深入解析MyISAM和InnoDB的区别

欢迎来到我的博客,代码的世界里,每一行都是一个故事 MySQL引擎对决:深入解析MyISAM和InnoDB的区别 前言引擎概述MyISAM:InnoDB: 使用场景使用 MyISAM 的最佳实践:使用 InnoDB 的最佳实践:可能的…