代码编译器:

代码:

编译就是讲一种代码编译成计算机可以理解的指令。 

=====================================================================================================

java的重排序:(JVM通过偏序关系保证重排序的指令符合业务需求)

代码首先是来表示一个处理数据的过程,这个过程就是通过计算机来执行,但是计算机现在的CPU是采取流水线进行多线程的执行,这样计算机的代码必选也是可以多线程进行执行的,但是多线程执行针对共享资源的操作必须使用同步保证(数据一致性),负责将会导致数据出现不一致,但是从本质来讲也就是一种顺序执行机制。在代码的级别,我们通常就是对多线程进行加锁。在编译器的角度而言,程序编译后的指令执行的顺序可能和代码的执行的顺序不一致,这样程序必然会执行失败,出现我们意想不到的结果。加入多线程的同步机制以后,程序在编译的时候,通过读取程序上面的同步机制,可以通过JVM平台的一些机制对编译的指令进行重现排序(这是就会有一个指导的规则,必须保证那些指令的执行必须在其他的指令执行的之前或者之后,从而可以在生成的合理的,满足我们要求的计算机指令顺序),这样在指令由CPU采取流水线执行机制时候,可以保证我们的多线程的程序按照我们的业务需求合理的多线程执行。说了好多,本质上就是编译器在生成代码指令序列时,JVM会通过java的同步机制对指令产生一个操作上的偏序关系(一种描述操作的顺序关系表示法-离散数学上一些概念)。

最新文章

  1. 深入解析PHP中的(伪)多线程与多进程
  2. 修改目的端trail文件的最大大小--转载
  3. uboot命令及内核启动参数
  4. HIbernate实现增、删、改、查。
  5. javaweb在线预览
  6. uva 11983 Weird Advertisement 扫描线
  7. linux工作队列
  8. IOS 中openGL使用(使用基准图快速制作滤镜)
  9. POJ 2388
  10. 一些爬虫中的snippet
  11. Android - 自定义控件之圆形控件
  12. Linux基础(七)
  13. RabbitMQ消息队列系列教程(一)认识RabbitMQ
  14. [转]Git教程【译】
  15. Template基础
  16. nodejs的package.json依赖dependencies中 ^ 和 ~ 的区别
  17. .net中文分词 jieba.NET
  18. Session共享的四种方法
  19. cetos7最小化安装设置网络启动和更新yum源
  20. python print 美化

热门文章

  1. 微信小程序之蓝牙开发(详细读数据、写数据、附源码)
  2. Python入门——第一个Python程序
  3. putc,fputc,和putchar
  4. C#反射 字符串转为实体类,并做为参数传入泛型方法中使用
  5. DoTween可视化编程用法详解
  6. BZOJ3757: 苹果树【树上莫队】
  7. 进程间通信--POSIX消息队列
  8. MySQL--限制用户使用资源
  9. NSDate 时间加减
  10. MSMQ-发送消息到远程专用队列path格式