Java 理论与实践: 非阻塞算法简介
2015-06-19 17:26
351 查看
非阻塞版本相对于基于锁的版本有几个性能优势。首先,它用硬件的原生形态代替 JVM 的锁定代码路径,从而在更细的粒度层次上(独立的内存位置)进行同步,失败的线程也可以立即重试,而不会被挂起后重新调度。更细的粒度降低了争用的机会
所有非阻塞算法的一个基本特征 —— 有些算法步骤的执行是要冒险的,因为知道如果 CAS 不成功可能不得不重做。非阻塞算法通常叫作乐观算法,因为它们继续操作的假设是不会有干扰。如果发现干扰,就会回退并重试。在计数器的示例中,冒险的步骤是递增 —— 它检索旧值并在旧值上加一,希望在计算更新期间值不会变化。如果它的希望落空,就会再次检索值,并重做递增计算。
所有非阻塞算法的一个基本特征 —— 有些算法步骤的执行是要冒险的,因为知道如果 CAS 不成功可能不得不重做。非阻塞算法通常叫作乐观算法,因为它们继续操作的假设是不会有干扰。如果发现干扰,就会回退并重试。在计数器的示例中,冒险的步骤是递增 —— 它检索旧值并在旧值上加一,希望在计算更新期间值不会变化。如果它的希望落空,就会再次检索值,并重做递增计算。
相关文章推荐
- 对java多线程的一点思考
- Spring事务配置的五种方式
- eclipse提交新项目到github
- 《Java知识点列表》V1.0
- java基础系列:System.getenv()
- Java关键字学习总结
- java连接mysql数据库的方法
- 使用Spring的LdapTemplate进行LDAP操作
- Java equals()和hashCode()重写总结
- Java深入浅出系列(一)——浅析Java反射机制
- velocity中调用Java代码无效或者无法debug
- java基础之 集合
- 简易Java(04):Java如何进行静态类型检查?
- java正则表达式 前后查找
- Java 中利用 axis2 进行webservice 客户端编写
- Quartz使用-入门使用(java定时任务实现)
- Java定时任务--定时调用方法(servlet)
- java用递归实现输入字符串反向输出
- 技术演绎之 [java] 重点总结
- 根据点画线java