java 多线程初入2
java 多线程初入2
并行的两个定律
- 获得更好的性能。 一般我们会把串行的程序改成并行的 期望提高的程序执行效率 问题。
- 业务的需要。
- 两个定律分别为 Amdahl 和 Gustafson
- Amdahl 定律 定义是 加速比 = 优化前的系统耗时 / 优化后系统耗时。
加速比的比值越大那么优化效果越好。
公式推导
如图所示,F 代表的是串行比例, n代表的是n个处理器,Tn代表的是处理器优化后的耗时,F是程序中只能串行的比例。最终看到当n越大时 那么 加速比与串行率成反比。但是如果我们就一直只增加处理器的数量 那么后期处理增加 提高的程序性能,不能有很大 的提升。我们还应该修改程序中串行的比例 这样才能用最小的代价换取最大的加速比
- Gustafson 加速比定义是一样的 ,但是这两者处理的角度不一样。
Gustafson
这个理论最后的结果是在串行比例很小的时候 加速比基本上就是处理的核数。
两个理论都有自己的关注点,关注点不同导致结果不同。矛盾并不存在。
java的JMM 中的原子性、可见性、有序性
- 原子性 是指一个操作是不可中断的 。即使是多个线程一起执行的时候,一个线程一旦开始,就不会被其他线程干扰。 保证原子性 就是线程运行 不会被其他线程干扰 ,该线程中的内容也不被其他线程所影响 修改。
- 可见性 就是指 当一个线程修改了某一个共享变量的值,其他线程就能立即知道该变量被修改了。 在多线程中 全局变量可能 将变量值缓存在cache 中或者在寄存器中那么,某个修成修改了值 ,可能其他线程不能立即知道 该变量的修改。那么其他线程就会出现问题。
- 有序性 如果在串行上来说,有序性会按照顺序执行,但是在多线程中可能会出现执行 的时候 进行 指令重排的情况 。串行指令重排能导致语义一致,但是多线程的时候可能保证不了了
指令不能进行重排 : Happen-Before 规则
指令重排规则
java 多线程初入2相关推荐
- Java学习—初入Java
一.初入Java 文章目录 一.初入Java 2.JDK的目录介绍 3.PATH环境变量 4.ClassPath环境变量 5.编写第一个Java程序 6.Java的运行机制 7.Java包的定义与使用 ...
- Java多线程——重入锁ReentrantLock源码阅读
上一章<AQS源码阅读>讲了AQS框架,这次讲讲它的应用类(注意不是子类实现,待会细讲). ReentrantLock,顾名思义重入锁,但什么是重入,这个锁到底是怎样的,我们来看看类的注解 ...
- java多线程---重入锁ReentrantLock
1.定义 重入锁ReentrantLock,支持重入的锁,表示一个线程对资源的重复加锁. 2.底层实现 每个锁关联一个线程持有者和计数器,当计数器为0时表示该锁没有被任何线程持有,那么任何线程都可能获 ...
- Java web 初入
Java Web应用的核心技术包括以下几个方面: ● JSP:进行输入和输出的基本手段. ● JavaBean:完成功能的处理. ● Servlet:对应用的流程进行控制. ● JDBC:是与数据库进 ...
- 萌新学Java之初入门径
字符串 String 位于java.lang包 * 使用lang包 不用导入头文件 * 字符串特点: 字符串是常量 * (一般字符串的方法 都是有返回值的 拼接) * 字符串使用跟基本数据类型一样 / ...
- java初入多线程6
java初入多线程6 volatile 与java内存模型(JMM) java的内存模型都是围绕着原子性.有序性.还有可见性来展开的. volatile 主要是用来告知虚拟机,被volatile 修饰 ...
- java初入多线程5
java初入多线程5 线程中断 概念 :让目标线程停止执行,但是是高知目标线程希望线退出,具体退出由目标线程自己决定. 相关的方法,暂时只介绍Thread的方法 Thread.interrupt() ...
- 初入Java测试员之路
初入(在大神的指导下)小小的经验之谈: 1.要熟悉需求分析说明书!重点要熟悉业务脉络,清晰业务流程传递! 2.熟悉项目原型!原型界面需求要保证能在项目真正实现中看到! 3.亲自操作真实项目实现,要切换 ...
- 初入Ubuntu的Java开发者安装软件手记
转载 [Linux]初入Ubuntu的Java开发者安装软件手记 作者:Rambo Chen 分类专栏: Java 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原 ...
最新文章
- matepad和鸿蒙,爆料称华为MatePad 2系列平板有三个版本:预装鸿蒙OS
- java使用BigDecimal 处理商业精度及高精度详解
- Bootstrap系列 -- 28. 下拉菜单状态
- 服务器怎么导出数据库文件,怎么导出服务器数据库文件
- configparser操作配置文件
- 吃货阶段01 类的定义 方法的布局 0925
- js模板引擎 之handlebars.js
- 2753:走迷宫(dfs+初剪)//可以说是很水了。。。
- poj3259 Wormholes(spfa判负环)
- bootstrap-datepicker实现日期input readonly 标签中选择时间功能
- java用if怎么编程税收_Java - 使用If和if else语句的简单税计算器
- word 公式编辑器 键入技巧 | 写数学作业必备速查表
- 电路设计中发光二极管用作指示灯时的限流电阻如何选择
- 一键清除锁屏密码:苹果手机忘记锁屏密码的解决方案
- 南邮电工电子实验设计5(单极共射放大电路)
- APP安全环节缺失,手游运营商如何应对APP破解困境
- 5、获取蓝牙设备列表(getBluetoothDevices)
- 高仿精仿好123网站导航源码完整最新版
- IE浏览器八大经典故障
- CANape使用记录(一):CANape新建工程及标定观测