java 多线程初入2

并行的两个定律

  1. 获得更好的性能。 一般我们会把串行的程序改成并行的 期望提高的程序执行效率 问题。
  2. 业务的需要。
  3. 两个定律分别为 Amdahl 和 Gustafson
  • Amdahl 定律 定义是 加速比 = 优化前的系统耗时 / 优化后系统耗时。
    加速比的比值越大那么优化效果越好。

公式推导

如图所示,F 代表的是串行比例, n代表的是n个处理器,Tn代表的是处理器优化后的耗时,F是程序中只能串行的比例。最终看到当n越大时 那么 加速比与串行率成反比。但是如果我们就一直只增加处理器的数量 那么后期处理增加 提高的程序性能,不能有很大 的提升。我们还应该修改程序中串行的比例 这样才能用最小的代价换取最大的加速比

  • Gustafson 加速比定义是一样的 ,但是这两者处理的角度不一样。

Gustafson

这个理论最后的结果是在串行比例很小的时候 加速比基本上就是处理的核数。
两个理论都有自己的关注点,关注点不同导致结果不同。矛盾并不存在。

java的JMM 中的原子性、可见性、有序性

  1. 原子性 是指一个操作是不可中断的 。即使是多个线程一起执行的时候,一个线程一旦开始,就不会被其他线程干扰。 保证原子性 就是线程运行 不会被其他线程干扰 ,该线程中的内容也不被其他线程所影响 修改。
  2. 可见性 就是指 当一个线程修改了某一个共享变量的值,其他线程就能立即知道该变量被修改了。 在多线程中 全局变量可能 将变量值缓存在cache 中或者在寄存器中那么,某个修成修改了值 ,可能其他线程不能立即知道 该变量的修改。那么其他线程就会出现问题。
  3. 有序性 如果在串行上来说,有序性会按照顺序执行,但是在多线程中可能会出现执行 的时候 进行 指令重排的情况 。串行指令重排能导致语义一致,但是多线程的时候可能保证不了了

指令不能进行重排 : Happen-Before 规则

指令重排规则

java 多线程初入2相关推荐

  1. Java学习—初入Java

    一.初入Java 文章目录 一.初入Java 2.JDK的目录介绍 3.PATH环境变量 4.ClassPath环境变量 5.编写第一个Java程序 6.Java的运行机制 7.Java包的定义与使用 ...

  2. Java多线程——重入锁ReentrantLock源码阅读

    上一章<AQS源码阅读>讲了AQS框架,这次讲讲它的应用类(注意不是子类实现,待会细讲). ReentrantLock,顾名思义重入锁,但什么是重入,这个锁到底是怎样的,我们来看看类的注解 ...

  3. java多线程---重入锁ReentrantLock

    1.定义 重入锁ReentrantLock,支持重入的锁,表示一个线程对资源的重复加锁. 2.底层实现 每个锁关联一个线程持有者和计数器,当计数器为0时表示该锁没有被任何线程持有,那么任何线程都可能获 ...

  4. Java web 初入

    Java Web应用的核心技术包括以下几个方面: ● JSP:进行输入和输出的基本手段. ● JavaBean:完成功能的处理. ● Servlet:对应用的流程进行控制. ● JDBC:是与数据库进 ...

  5. 萌新学Java之初入门径

    字符串 String 位于java.lang包 * 使用lang包 不用导入头文件 * 字符串特点: 字符串是常量 * (一般字符串的方法 都是有返回值的 拼接) * 字符串使用跟基本数据类型一样 / ...

  6. java初入多线程6

    java初入多线程6 volatile 与java内存模型(JMM) java的内存模型都是围绕着原子性.有序性.还有可见性来展开的. volatile 主要是用来告知虚拟机,被volatile 修饰 ...

  7. java初入多线程5

    java初入多线程5 线程中断 概念 :让目标线程停止执行,但是是高知目标线程希望线退出,具体退出由目标线程自己决定. 相关的方法,暂时只介绍Thread的方法 Thread.interrupt() ...

  8. 初入Java测试员之路

    初入(在大神的指导下)小小的经验之谈: 1.要熟悉需求分析说明书!重点要熟悉业务脉络,清晰业务流程传递! 2.熟悉项目原型!原型界面需求要保证能在项目真正实现中看到! 3.亲自操作真实项目实现,要切换 ...

  9. 初入Ubuntu的Java开发者安装软件手记

    转载 [Linux]初入Ubuntu的Java开发者安装软件手记 作者:Rambo Chen 分类专栏: Java 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原 ...

最新文章

  1. matepad和鸿蒙,爆料称华为MatePad 2系列平板有三个版本:预装鸿蒙OS
  2. java使用BigDecimal 处理商业精度及高精度详解
  3. Bootstrap系列 -- 28. 下拉菜单状态
  4. 服务器怎么导出数据库文件,怎么导出服务器数据库文件
  5. configparser操作配置文件
  6. 吃货阶段01 类的定义 方法的布局 0925
  7. js模板引擎 之handlebars.js
  8. 2753:走迷宫(dfs+初剪)//可以说是很水了。。。
  9. poj3259 Wormholes(spfa判负环)
  10. bootstrap-datepicker实现日期input readonly 标签中选择时间功能
  11. java用if怎么编程税收_Java - 使用If和if else语句的简单税计算器
  12. word 公式编辑器 键入技巧 | 写数学作业必备速查表
  13. 电路设计中发光二极管用作指示灯时的限流电阻如何选择
  14. 一键清除锁屏密码:苹果手机忘记锁屏密码的解决方案
  15. 南邮电工电子实验设计5(单极共射放大电路)
  16. APP安全环节缺失,手游运营商如何应对APP破解困境
  17. 5、获取蓝牙设备列表(getBluetoothDevices)
  18. 高仿精仿好123网站导航源码完整最新版
  19. IE浏览器八大经典故障
  20. CANape使用记录(一):CANape新建工程及标定观测

热门文章

  1. L2TP协议笔记1---L2TP概念及协议流程分析
  2. php unset数组,php unset 数组不管用
  3. Netty与mina的比较
  4. 面向对象之: 类空间问题及类之间的关系
  5. 关于Java中被static修饰的静态变量 (类变量)
  6. 8 使用SubMenu创建子菜单
  7. 深入浅出之正则表达式(转载)
  8. 浅谈HTTP中Get与Post的区别[转 hyddd]
  9. (16):Silverlight 2 数据与通信之JSON
  10. 教学思路ASP.Net之服务器控件: 四、FileUpload