JAVA笔记-并发


一、无锁定且无等待算法自增算法
实现自增主键的 控制多个线程同时操作时候 不会带来计数有误问题
jvm
JDK 5.0 是开发高性能并发类的巨大进步。通过内部公开新的低级协调原语,和提供一组公共原子变量类,现在用 Java 语言开发无等待、无锁定算法首次变为可行
AtomicInteger类实现自增
并发操作,要确保数据一致性,只有两种方法,
a、锁
    a1、操作系统
    a2、绕过操作系统扔给硬件
        jvm 将这个 ++操作,交给cpu 去管理,告诉cpu 这个++是原子操作cpu 就知道这个操作是原子操作,不操作完,不让寄存器写回内存别的进程就没法去操作了
b、回退到顺序操作



线程和进程的区别

Volatile变量修饰符
    
它比synchronized的使用和执行成本会更低,因为它不会引起线程上下文的切换和调度。
    原理:Volatile会多生成一个Lock前缀指令
      

            lock前缀的指令在多核处理器下会引发了两件事情。

  • 将当前处理器缓存行的数据会写回到系统内存。
  • 这个写回内存的操作会引起在其他CPU里缓存了该内存地址的数据无效

        lock指令引起处理器缓存回写到内存,

阻止同时修改被两个以上处理器缓存的内存区域数据

        一个处理器的缓存回写到内存会导致其他处理器的缓存无效



参考
http://www.infoq.com/cn/articles/ftf-java-volatile

EJB知识
请使用浏览器的分享功能分享到微信等