广州开发小程序企业seo网络营销

pingmian/2025/10/10 8:31:49/文章来源:
广州开发小程序,企业seo网络营销,东莞设计制作网站制作,linux wordpress 主题下载Java内存模型: 内存分布情况及其关系: 主内存:Java内存模型规定所有的变量都保存在主内存中 工作内存:每个线程都有自己的工作内存,保存了该线程使用到的变量的主内存副本拷贝 主内存与工作内存的关系: 线程对变量的所有操作都必须在自己的工作内存中进行,不能直接读写主内存…Java内存模型: 内存分布情况及其关系: 主内存:Java内存模型规定所有的变量都保存在主内存中 工作内存:每个线程都有自己的工作内存,保存了该线程使用到的变量的主内存副本拷贝 主内存与工作内存的关系: 线程对变量的所有操作都必须在自己的工作内存中进行,不能直接读写主内存中的变量 不同线程之间无法直接访问对方工作内存中的变量 线程间变量值的传递均需要通过主内存来完成 内存交互操作: java内存模型定义了8个操作完成主内存与工作内存的交互操作 1.read: 把变量从主内存读取到工作内存中 2.load: 在read执行后, 把read得到的值存入工作内存中 3.use: 把工作内存中一个变量值传递给执行引擎 4.assign: 把一个执行引擎接收的数据复制给工作内存变量 5.store: 把工作内存中的一个变量的值传送到主内存 6.write: 在store执行后, 把store得到的值放入主内存的变量中 7.lock: 作用于主内存的变量 8.unclock注: read-load,store-write必须顺序执行,不需要连续执行(read a,read a,load b,load b),不可单独出现. 不允许一个线程丢弃它最近的assign的操作,即变量在工作内存中改变了之后必须把该变化同步到主内存中 不允许一个线程无原因地把数据从线程的工作内存同步回主内存中 一个新变量只能在主内存中诞生,不允许在工作内存中直接使用一个未被初始化的变量 一个变量在同一时刻只允许一条线程对其lock操作,但lock操作可以被同一条线程执行多次,多次执行lock后,只有执行相同次数的unclock,变量才能解锁 如果对一个变量执行lock操作,将会清空工作内存 中此变量的值,在执行引擎使用这个变量前,需要重新执行load/assign来初始化变量 如果一个变量没被lock锁定,则不允许对它执行unclock,unclock也一致 对变量执行unclock操作之前,必须把此变量同步到主内存中(执行store/write) 原子性: 互斥同步机制: 1.JVM实现的synchronized:同步一个代码块:public void f(){synchronized(this){.......}} //只能作用于同一个对象, 不同的对象不同进行同步, 例如: 如果同步一个账户,两个人同时操作一个账户,账户加锁即可同步, 对于不同的账户不需要同步, 二者没有任何关系, 也就没有同步这一说法同步一个方法与同步代码块一致只能作用于同一个对象:public synchronized void f(){.....}同步一个类,作用于整个类,两个线程调用同一个类的不同对象也会产生同步:public void f(){synchronized (SynchronizedExample.class){.........}}同步一个静态方法,作用于整个类public synchronized static void f(){....}2.JDK实现的ReentrantLock //java.util.concurrent(J.U.C)包中的锁public class LockTest{private Lock lock new ReentrantLock();public void f(){lock.lock();try{.......}finally{lock.unlock();//释放锁,避免死锁}}}上述二者的性能现在大致相同 ReentrantLock与synchronized的区别: 在ReentrantLock中当持有锁的线程长期不释放锁的时候, 正在等待的线程可以选择放弃, 改为处理其他事, synchronized不行 公平锁: 多个线程等待同一个锁, 必须按照申请锁的时间顺序获得锁, synchronized中非公平锁,ReentrantLock也是非公平的, 但也可以是公平的 ReentrantLock可以同时绑定多个Condition对象 注: 除非使用ReentrantLock的高级功能, 否则优先使用synchronized, ReentrantLock不是所有的JDK都支持, 使用synchronized不用担心没释放锁而导致死锁问题, JVM会释放锁 原子性总结 synchronized的修饰对象 修饰代码块大括号括起来作用于对象 修饰方法方法名前使用 作用于对象在方法内部使用synchronized代码块与修饰方法时效果是一致的 修饰静态方法整个静态方法作用于所有对象 修饰类类名前添加作用于所有对象 注: 1.作用于对象时不同调用对象之间不影响 2.使用synchronized的父类synchronized不属于方法声明的一部分子类继承后需要对其方法重新添加synchronized修饰不然不能使用同步 特点synchronized不可中断锁适用于竞争不激烈可读性好的场景Lock可中断锁多样化同步竞争激烈时能维持常态Atomic竞争激烈时能维持常态比Lock性能好可见性: 定义: 指当多个线程访问同一个变量时一个线程修改了这个变量的值其他线程能够立即看得到修改的值。 即: 当共享变量被修改后, 在其他线程修改之前, 会被立马同步到主内存中 导致共享变量在线程中不可见原因 1.线程交叉执行交叉过程中当前线程还未来得及修改主内存值就已被其他线程修改了 2.重排序结合线程交叉执行指令重排不具有原子性导致1.中出现的问题 3.共享变量更新不及时不能及时从工作内存快速同步到主内存中Java多线程的可见性操作 在多线程环境下一个线程对共享变量的操作对其他线程是不可见的。 Java提供了volatile来保证可见性当一个变量被volatile修饰后表示着线程本地内存无效当一个线程修改共享变量后他会立即被更新到主内存中其他线程读取共享变量时会直接从主内存中读取。 synchronize和Lock都可以保证可见性。synchronized和Lock能保证同一时刻只有一个线程获取锁然后执行同步代码并且在释放锁之前会将对变量的修改刷新到主存当中, 以此保证可见性。 synchronized与volatile可见性操作细节: synchronized的可见性1.线程解锁前线程执行完同步模块之前必须把共享变量的最新值刷新到主内存从工作内存中把值放入主内存2.线程加锁的时候必须先清空工作内存中上次存储的共享变量的值然后再从主内存重新读取最新的值加锁与解锁是对同一把锁来说 volatile的可见性1.对volatile修饰的变量进行写操作的时候会在写操作之后加StoreStore屏障指令将工作内存中变量值刷新到主内存中共享变量2.对volatile修饰的变量进行读操作的时候会在读操作之前加StoreLoad屏障指令从主内存读取共享变量载入工作内存也就把以前工作内存存储的值覆盖 final的可见性:final: 被final修饰的变量在构造函数中被初始化且没有发生this逃逸,其他线程就能看见final注 volatile的写操作: StoreStore屏障禁止volatile指令上面的普通写和下面的volatile写操作重排序 StoreLoad屏障防止volatile写操作与之后volatile读写操作的指令重排 volatile的读操作: 在插入LoadLoad屏障的位置, 禁止该指令前以及该指令后的volatile的读写重排序操作 volatile不具有原子性, 不是线程安全的, 只适合于作为状态标记量, 对变量的写操作不依赖于当前值 有序性: 定义即程序执行的顺序按照代码的先后顺序执行, 在本线程中观察, 所有的操作都是有序的 需要注意的是: 从其他线程看本线程中会发现所有的操作都是无序的, jvm对每个线程都会进行指令重排, 且重排都会不一样, 在多线程的情况下, 指令重排将会出错, 一般采用volatile/synchronized修饰, 不会出现指令重排, 确保每个时刻都只有一个线程在执行. 先行发生原则: 1.单一线程原则:单个线程内, 程序前面的操作先行发生与后面的操作 2.管程锁定原则:一个unclock操作先行发生于后面对同一个所的lock操作,必须释放锁后,才能对对象重新加锁 3.volatile变量原则:对一个变量的写操作先行发生于后面对这个变量的读的操作 4.线程启动:Thread对象的start操作先行发生于此线程的每一个操作 5.线程加入规则: Thread对象的结束先行发生于join()的返回 6.线程中断原则: 对线程interrupt()的调用先行发生于被中断线程代码检测到的中断时间的发生, 可以通过interrupt检测是否有中断发生 7.对象终结规则: 一个对象的初始化(从构造函数结束开始)先行发生于它的finalize方法的开始 8.传递性: A比B先发生, B比C先发生, 则A比C先发生 上面有错, 还请指出, 如果认为我写的还不错, 还请点个赞, 多多支持一下, O(∩_∩)O~~

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

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

相关文章

免费行情软件app网站大全下载u288北京住建局

智能优化算法应用:基于北方苍鹰算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于北方苍鹰算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.北方苍鹰算法4.实验参数设定5.算法结果6.参考…

移动网站建设生要女延吉哪家网站建设公司好

解决办法:上次我的复制 ctrl c不能用就是打开的QQ系统设置,只保留qq的截图快捷键,其他的都是无。 哎,一会又热键冲突了,卸载了搜狗输入法就没事了,原来搜狗的问题。转载于:https://www.cnblogs.com/xiaofa…

广州网站推广方案视频分享网站建设难吗

前面2期内容,主要给大家重点介绍了Runway视频生成技术的核心产品功能板块Gen1、Gen2、FI使用教程,还没有看过的小伙伴可以回看往期文章。除了视频生成AI技术外,Runway还具有图片、视频后期处理30多项单个功能,例如视频修复、视频主…

兰州专业网站建设公司泰安的网站建设公司

ES6版本 function countdown(endTime, includeSeconds true) {// 获取当前时间let now new Date();// 将传入的结束时间字符串转换为日期对象let endDateTime new Date(endTime);// 检查传入的时间字符串是否只包含日期(不包含时分秒)if (endTime.tr…

北仑网站建设29gz上海建设网站方法

文档讲解:打家劫舍 打家劫舍II 打家劫舍III 198.打家劫舍 题目链接:https://leetcode.cn/problems/house-robber/description/ 思路: 设dp[i]:考虑下标i(包括i)以内的房屋,最多可以偷窃的金…

免费网页代理ip地址网站观澜做网站公司

sentinel中监听器的运用–规则管理 规则结构 类图关系 类关系图如下 Rule 将规则抽象成一个类, 规则与资源是紧密关联的, 也就是说规则作用于资源。因此, 我们需要将规则表示为一个类, 并包含一个获取资源的方法 这里采用接口的原因就是规则是一个抽象概念而非具体实现。…

废旧网站那个做的最好网站模板出售

咨询区 Guilherme Ferreira:我通过 post 方式向我的一个webapi中提交数据,然后插入到数据库中,在 ui端,当用户点击某一个 button 之后,代码会将 button 禁用,但因为某些原因,点击按钮的速度比禁…

购物网站的首页是静态详细描述建设一个网站的具体步骤

文章目录 [toc]试题编号试题名称时间限制内存限制问题描述输入格式输出格式样例输入样例输出样例说明评测用例规模与约定Python实现 试题编号 202309-1 试题名称 坐标变换(其一) 时间限制 1.0s 内存限制 512.0MB 问题描述 对于平面直角坐标系上的坐标 (…

无锡专业做网站望野王绩翻译

Express 框架 Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具。 使用 Express 可以快速地搭建一个完整功能的网站。 Express 框架核心特性: 可以设置中间件来响应 HTTP 请求。 定…

网站搭建哪家好网站建设费用的会计分录

姑姑和堂弟从老家呼伦贝尔来北京,我拍下了这张照片。

龙华网站开发公司电话情人节给女朋友做网站

文章目录1. 进入配置文件2. 环境变量添加格式3.使配置文件立即生效4. 实例1. 进入配置文件 sudo vim /etc/profile2. 环境变量添加格式 export 变量名路径 export PATH${PATH}:${变量名}/子路径3.使配置文件立即生效 source /etc/profile4. 实例 export MAVEN_HOME/usr/lo…

网站开发制作报价单网站 多少篇文章才能上线

1、认识一下小小蛮驴真面目 1.1、组件部分 HaaS100核心板 HaaS100是一款物联网场景中的标准硬件,并配套嵌入到硬件中的软件驱动及功能模块,为用户提供物联网设备高效开发服务。 HaaS100核心板有着丰富的外设接口,如下所示: 智…

做网站别名解析的目的是什么网站建设简讯

cc_gbif()是R语言包coordinatecleaner中的一个函数,用于清理GBIF(全球生物多样性信息设施)数据集的地理坐标。该函数可以识别潜在的坐标错误,并对其进行修正或删除。 以下是cc_gbifl()函数的一般用法和主要参数: cc_…

网站建设 企业机房托管

2019独角兽企业重金招聘Python工程师标准>>> 防止黑客入的方法有很多,但是世界上没有绝对安全的系统。我们只可以尽量避免被入侵,最大的程度上减少伤亡。那么,接下来天下数据将为您详细介绍防止黑客入侵的五大技巧。(本文为天下数…

著名设计案例网站网站一般用什么语言

vue2面试题:vue组件之间的通信方式有哪些? 回答思路:1.组件通信的目的-->2.组件通信的分类-->3.组件通信的方案1.组件通信的目的2.组件通信的分类3.组件通信的方案(1)通过props传递数据(2&#xff09…

网站建设到底怎么回事河南便宜网站建设费用

这个onvif工具可以实时监控画面,使用起来简单方便 左侧一栏是设备信息,中间上半部分是设备配置设置,下半部分是图像预览配置设置。 修改密码可通过该工具,点击User management后选择用户类型并且修改密码。

绍兴柯桥建设局网站广告设计软件手机版

MySQL提供了许多数字函数,用于对数字进行各种计算和处理。以下是一些常用的MySQL数字函数。 内容有点多,建议收藏以备后续用到查阅参考。 目录 一、SIGN 取数字的符号 二、ABS 取绝对值 三、COS 取余弦值 四、ACOS 取反余弦值 五、SIN 取正弦值 六…

枣庄做网站建设的公司附近培训电脑的地方

目录 一、下载程序 1. 点击Download 2. 点击Files for Microsoft Windows 3. 点击Apache Lounge 4. 点击httpd-2.4.54-win64-VSI6.zip ​5. 下载压缩包 6.解压到文件夹里 二、配置环境变量 1. 右键我的电脑 - 属性 2. 高级系统设置 3. 点击环境变量 4. 点击系统变…

深圳网站开发服务流行网站类型

列表查询中一对多查询循环查询优化,mysql循环查询优化描述比如查询学生列表,每一行需要包含该学生的家长列表,一个学生对应多个家长。循环查询方式先查出学生列表,再循环查询对应的家长列表,需要查询N1次但在循环中查询…

设计高端网站建设上海电子商务网站制作公司

摘要: 如果您是一个大数据开发工程师并且使用过hadoop的hive框架,那么恭喜您,阿里云的大数据计算服务-Maxcompute,您已经会了90%。这篇文章就来简单对比下Maxcompute和hive的异同,来方便刚开始使用Maxcompute的用户&am…