并发 标签

java并发的底层实现原理 有更新!

  |   0 评论   |   2,299 浏览

一. 并发编程的三要素 1. 原子性 同一个操作或者多个操作,要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。 2. 可见性 当多个线程访问同一个变量时,一个线程修改类这个变量的值,其他线程能够立即得到修改的值。 3. 有序性 程序执行的顺序按照代码的先后顺序执行。 在多线程的环境下,必须要保证原子性、可见性和有序性。只要有一个没有被保证买就有可能会导致程序运行错误。 二. 指令重排序 三. java中对并发编程三要素的处理 原子性 可见性 有序性 四. java内存模型(JMM) 五. 顺序一致性模型

UnSafe的使用和分析 有更新!

  |   0 评论   |   2,821 浏览

最初在接触到UnSafe类是在看JAVA并发性编程源码的时候,在Atomic包的AtomicLong、AtomicInteger、AtomicReference等类中都定义了unsafe的变量。因为此前并没有接触过这个类,因此查阅了一些资料,看了UnSafe类的代码,在这里对相关知识做一个整理,以便日后方便查阅。 1. UnSafe 的作用 众所周知java无法直接访问操作系统的底层,只能通过JNI来访问native层。因此,UnSafe算是java留的一个后门,UnSafe类提供了硬件级别的原子操作,主要提供了以下功能: - 内存管理 通过UnSafe类可以分配内存,可以扩充内存,可以释放内存等 在UnSafe类中提供了三个native方法allocateMemory、reallocateMemory和freeMemory // 分配内存 public native long allocateMemory(long l); // 扩充内存 public native long reallocateMemory(long l,long ll); // 释放内存 pulic native....