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

杭州百度seo宁波seo关键词优化设计

杭州百度seo,宁波seo关键词优化设计,品牌建设的概念,大冶网站开发文章目录 1、Java内存模型2、JMM的核心概念1#xff09;主内存与工作内存2#xff09;内存可见性3#xff09;JMM的三大特性#xff1a;原子性、可见性、有序性。 3、JMM中的八种操作4、Happens-before 规则5、样例#xff1a; 1、Java内存模型 Java内存模型#xff08;… 文章目录 1、Java内存模型2、JMM的核心概念1主内存与工作内存2内存可见性3JMM的三大特性原子性、可见性、有序性。 3、JMM中的八种操作4、Happens-before 规则5、样例 1、Java内存模型 Java内存模型Java Memory ModelJMM是一种抽象的概念用于定义多线程程序如何与内存进行交互。JMM并不真实存在它是一种规范规定了程序中变量在内存中的访问方式。 计算机在执行程序时每条指令都是在CPU中执行的。而执行指令的过程中势必涉及到数据的读取和写入。由于程序运行过程中的临时数据是存放在主存物理内存当中的这时就存在一个问题由于CPU执行速度很快而从内存读取数据和向内存写入数据的过程跟CPU执行指令的速度比起来要慢的多硬盘 内存 缓存cache CPU。因此如果任何时候对数据的操作都要通过和内存的交互来进行会大大降低指令执行的速度。因此在CPU里面就有了高速缓存。也就是当程序在运行过程中会将运算需要的数据从主存复制一份到CPU的高速缓存当中那么CPU进行计算时就可以直接从它的高速缓存中读取数据或向其写入数据了。当运算结束之后再将高速缓存中的数据刷新到主存当中。 2、JMM的核心概念 1主内存与工作内存 主内存所有变量都存储在主内存中主内存是共享的。工作内存每个线程都有自己的工作内存工作内存中保存了主内存中变量的副本。线程对变量的所有操作读取、写入都在工作内存中进行最后再将结果同步回主内存。 2内存可见性 JMM规定了线程对变量的读取和写入顺序确保变量的修改在其他线程中可见。即当一个线程修改了变量的值其他线程最终能看到这个修改后的值。 3JMM的三大特性原子性、可见性、有序性。 原子性 一个或多个操作要么全部执行要么全部不执行执行的过程中是不会被任何因素打断的。 可见性 一个线程对共享变量的修改能够被其他线程看到。通过 volatile 关键字、锁如 synchronized来实现可见性。 程序的执行在实际运行时可能会被重排序但JMM提供了一定的保证使得某些操作在多线程环境中会按照程序的顺序执行。 3、JMM中的八种操作 JMM抽象了线程和主内存之间的关系定义了以下八种操作来完成主内存和工作内存之间的交互 • lock锁定作用于主内存的变量把一个变量标识为一条线程独占状态。 • unlock解锁作用于主内存变量把一个处于锁定状态的变量释放出来释放后的变量才可以被其他线程锁定。 • read读取作用于主内存变量把一个变量值从主内存传输到线程的工作内存中以便随后的load动作使用。 • load载入作用于工作内存的变量它把read操作从主内存中得到的变量值放入工作内存的变量副本中。 • use使用作用于工作内存的变量把工作内存中的一个变量值传递给执行引擎每当虚拟机遇到一个需要使用变量的值的字节码指令时将会执行这个操作。 • assign赋值作用于工作内存的变量它把一个从执行引擎接收到的值赋值给工作内存的变量每当虚拟机遇到一个给变量赋值的字节码指令时执行这个操作。 • store存储作用于工作内存的变量把工作内存中的一个变量的值传送到主内存中以便随后的write的操作。 • write写入作用于主内存的变量它把store操作从工作内存中一个变量的值传送到主内存的变量中。 4、Happens-before 规则 JMM还定义了一个重要的概念happens-before它是判断数据是否存在竞争、线程是否安全的依据。happens-before原则规定了以下几种情况 • 程序次序规则一个线程中的每个操作happens-before于该线程中的任意后续操作。 • 监视器锁规则对一个锁的解锁happens-before于随后对这个锁的加锁。 • volatile变量规则对一个volatile域的写happens-before于任意后续对这个volatile域的读。 • 传递性如果A happens-before B且B happens-before C那么A happens-before C。 • start()规则如果线程A执行操作ThreadB.start()启动线程B那么A线程的ThreadB.start()操作happens-before于线程B中的任意操作。 • join()规则如果线程A执行操作ThreadB.join()并成功返回那么线程B中的任意操作happens-before于线程A从ThreadB.join()操作成功返回。 • 中断规则对线程interrupt()方法的调用happens-before于被中断线程的代码检测到中断事件的发生。 • 终结器规则对象的构造函数执行、结束happens-before于它的finalize()方法的开始。 JMM定义了一组 happens-before 规则用来确定操作之间的顺序确保内存可见性和有序性 5、样例 public class VolatileExample {private volatile boolean flag false;public void writer() {flag true; // 写操作保证对其他线程可见}public void reader() {if (flag) { // 读操作确保读取到最新值System.out.println(Flag is true);}} }public class SynchronizedExample {private int count 0;public synchronized void increment() {count; // synchronized 确保可见性和原子性}public synchronized int getCount() {return count; // synchronized 确保读取最新值} } 在 VolatileExample 中flag 变量使用 volatile 修饰确保在一个线程修改 flag 后其他线程能够立即看到变化。在 SynchronizedExample 中increment 和 getCount 方法使用 synchronized 修饰确保操作的可见性和原子性。
http://www.pierceye.com/news/57777/

相关文章:

  • 网站开发的软硬件需求工程造价
  • 哪里培训做网站wordpress 在线运行
  • 淄博网站建设培训学校国际新闻环球网
  • 如何用wordpress做网站如何进行新产品的推广
  • 厦门网站制作软件宿州大型网站建设公司
  • 免费申请试用网站北京东直门 网站建设
  • 凡科建站快车登录北京企业建站哪家好
  • 快速做网站哪家好梧州论坛蒙山
  • 上海网站建设与设计公司中國無法訪問wordpress
  • 做网站主机几个配件做seo哪些网站会好点
  • 工业信息化部网站备案空白word个人简历模板下载
  • 公司开网站干嘛怎么做北京pk10的网站
  • 动易sitefactorycms 网站配置保存不了问题免费设计图
  • 商城网站的建设定位做网站实现自动生成pdf
  • 佛山外英语网站制作俄罗斯门户网站有哪些
  • 安庆哪些做网站的公司好海尔公司网站建设现状
  • 网站建设合作协议模板友链交易平台源码
  • 网站建设gxjzdrj小企业网站建设在哪能看
  • 如何做招聘网站效果分析重庆天蚕网络科技有限公司
  • 用电脑做兼职的网站比较好哪里可以找到制作网站的公司
  • 天津网站建设诺亚网站改版怎么做301
  • 怎样做个网站柳州集团学校网站建设
  • 云南建设网站首页wordpress 禁止百度转码
  • 比较漂亮的营销型网站优化关键词哪家好
  • 三网合一网站系统wordpress 多语言
  • 网站国内空间价格做网站花了三万块
  • 国内做性视频网站网页设计模板图片家乡
  • wordpress子域名多站点ui设计是什么专业学的
  • 网站添加备案信息吗网站业务怎么做
  • 网站导航下拉菜单代码网站开发与网页制作的区别