当前位置: 首页 > news >正文

深圳罗湖网站制作公司哪家好/凡科网建站系统源码

深圳罗湖网站制作公司哪家好,凡科网建站系统源码,抖音开放平台怎么注册,厦门哪家做网站好文章目录1、上下文切换2、名称解析下面我们以2个线程对同一个类中同一静态变量做简单自增和自减为例,初步了解线程安全问题。一个线程对初始值为0的静态变量做自增5000次,另外一个线程对同一静态变量做自减5000次,结果会是我们预想的0吗&…

文章目录

  • 1、上下文切换
  • 2、名称解析

下面我们以2个线程对同一个类中同一静态变量做简单自增和自减为例,初步了解线程安全问题。

一个线程对初始值为0的静态变量做自增5000次,另外一个线程对同一静态变量做自减5000次,结果会是我们预想的0吗?

public class ThreadSecurity01 {static int n = 0;public static void main(String[] args) throws InterruptedException {Thread t1 = new Thread(() -> {for (int i = 0; i < 5000; i++) {n++;}}, "t1");Thread t2 = new Thread(() -> {for (int i = 0; i < 5000; i++) {n--;}}, "t2");t1.start();t2.start();t1.join();t2.join();log.debug("最终结果:{}", n);}
}

多次执行,结果并不是0,而是不可预知的结果,为什么会出现这样的结果呢?下面我们简单介绍下多线程安全问题。

1、上下文切换

问题分析:因为Java对静态变量的自增、自减操作并不是原子性的,下面我们重字节码来分析。

例如对于i++而言(i为静态变量),实际会产生如下的JVM字节码指令:

getstatic	i	// 获取静态变量的值
iconst_1 		// 准备常量1
iadd			// 自增
putstatic 	i	// 将修改后的值存入静态变量i	

而对应的i–也是类似

getstatic	i	// 获取静态变量的值
iconst_1 		// 准备常量1
isub			// 自减
putstatic 	i	// 将修改后的值存入静态变量i

而Java的内存模型,完成静态变量的值的自增,自减要在主存和工作内存之间交换值,图示:

在这里插入图片描述

上面是各运行一次自增和自减,结果为-1的情况,为1, 0的情况也是如此。

2、名称解析

  • 一个线程运行多个线程是没问题的

  • 问题出在多个线程访问共享资源

    • 多个线程读共享资源,也是没问题的
    • 多个线程对共享资源读写导致线程切换,指令交错,就会出现问题
  • 临界区:一段代码块内如果存在对共享资源的多线程读写操作,称该代码块为临界区

  • 竞态条件:多个线程在临界区内执行,由于代码的执行序列不同二导致结果无法预测,称之为发生了竞态条件。

想要进一步的理解多线程安全问题产生,需要深入了解Java内存模型、JVM工作原理、操作系统任务调度等等知识, 这一块还没有学到,暂时讲解到这来。有兴趣的可以自行搜索,或者参考一下文章:
参考文章:

http://www.lbrq.cn/news/1593811.html

相关文章:

  • 个人网站毕业设计论文/长沙网站推广服务公司
  • 如何拥有一个自己的网站/如何做好品牌宣传
  • jsp动态网站开发案例教程下载/什么是优化师
  • 工信部网站备案系统怎么注册/最近发生的新闻事件
  • 织梦做的网站有点慢/网络营销的推广方式
  • 建设网站定位分析/推广代理
  • 如何设计网站制作方案/b2b平台营销
  • 网站建设业务开展方案/百度指数查询排行榜
  • 版面布局网站的域名和所采用的版面布局形式/网络营销的发展历程
  • 东莞凤岗网站建设制作/google 优化推广
  • 网站建设推广方式/免费crm
  • 乌海学校网站建设/怎样创建网站平台
  • 网站建设哪家好采用苏州久远网络/长春网站优化哪家好
  • 阿里云网站建设好用吗/互联网推广与营销
  • 现在还有做网站的必要吗/企业培训课程设置
  • 建设企业网站官网企业/公司网站建设步骤
  • 网站商城建设基本流程/百度人工服务24小时
  • 高端网站设计报价/代写文章多少钱
  • 网站无法排版/网络推广的方法有哪些
  • 做app必须有网站吗/百度网盘登陆入口
  • 网站强制字体wordpress/百度官网认证免费
  • 微网站 app 区别/金华网站建设
  • 网站开发电脑设置/潍坊网站外包
  • b2b免费网站建设/seo的主要工作是什么
  • 龙游手机网站制作/seo免费外链工具
  • 对互联网网站的理解/引流黑科技app
  • 今日邢台新闻最新消息/哪个合肥seo好
  • 深圳网站制作专业公司/广告营销方式有哪几种
  • 网站开发维护招聘/淘宝产品关键词排名查询
  • 重庆网站制作特点优势/搜狐财经峰会
  • 第14届蓝桥杯Scratch_选拔赛_初级及中级(STEMA)真题2022年12月18日
  • 飞算JavaAI开发平台:重构开发全流程——从需求到工程的智能化跃迁
  • LINUX 85 SHElL if else 前瞻 实例
  • JS-第二十一天-尺寸位置
  • AI Agents漏洞百出,恶意提示等安全缺陷令人担忧
  • Fay数字人如何使用GPT-SOVITS进行TTS转换以及遇到的一些问题