- 博客(8)
- 收藏
- 关注
翻译 java并发之内存模型与线程安全-02
原子性 指一个操作是不可中断的,即使是在多线程一起执行的时候,一个操作一旦开始, 就不会被其他线程干扰。 可见性 是指当多个线程访问同一个变量时,一个线程修改了这个变量的值,其他线程能够 立即看得到修改的值。于可见性,Java提供了volatile关键字来保证可见性。 如果一个变量被volatitle修饰后,当一个线程对这个变量进行修改时,会将修改后 的值更新到主内存中,如果有其他线程想要...
2018-08-01 20:45:36 145
翻译 zookeeper介绍
zookeeper是什么 zookepper是hadoop的一个子项目,Apache软件基金会下的一个项目,用于分布式程序的协调服务。具体是什么呢?打个比方,我们可以把整个分布式应用程序想象成一个人,分布式应用程序由不同服务组成,就好比一个人由不同的器官组成,比如一个人有头,有手,有脚,眼睛,鼻子等。那么zookeeper在分布式系统中充当一个什么角色呢?我们可以把zookeepe...
2018-06-27 11:38:48 222
转载 java并发之概念详解-01
同步与异步 同步与异步都是对于方法来讲的。如果一个方法是同步的,那么必须等到该方法执行完成后才能执行下面的代码,如果方法是一个异步方法,那么在执行该方法时会立即返回,这里并不是说该方法已经执行完成,而是单独去启动一个线程去执行,而后面的代码也不必等到该方法执行完成后在去执行。并行与并发 并行是指单个线程或单个进程同时执行,发生在多个cpu中,并发是指在单个cpu中在不同...
2018-06-24 21:44:50 153
翻译 并归排序
public static void mergeSort(int arr[],int start,int end,int temp[]){ int mid=(start+end)/2; if(start<end){//当数组的个数大于2个的时候 mergeSort(arr,start,mid,temp); mergeSort(arr,mid+1...
2018-03-11 22:30:39 163
转载 二叉树的遍历算法
非递归实现前序遍历二叉树:public static void preOrder1(Node root){ Node node=root; Stack<Node> stack=new Stack<>(); if(node!=null){ stack.push(node); } while(!stack.empty())...
2018-03-11 17:46:02 133
翻译 JAVA对象的访问定位
由于reference类型在jvm规范中只定义了一个指向对象的引用,没有定义这个引用应该以何种方式去定位、访问堆中对象,所以对象的访问方式也是取决于虚拟机的具体实现。目前主流的访问方式有两种句柄和直接指针。 句柄:java堆中划分一块内存作为句柄池,reference中存储的就是对象的句柄地址,而句柄中又包含了,对象实例数据和类型数据各自的地址信息。 直接指针:referenc...
2018-02-23 15:47:37 226
翻译 JAVA对象的内存布局
对象在内存中存储的布局分为3块区域:对象头,实例数据,对齐填充 对象头:包含两部分信息,第一部分存储对象对象运行时数据,如哈希码、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID,偏向时间戳。第二部分是类型指针,即对象指向它的类元数据的指针,jvm通过这个指针来指明这个对象是那个类的实例。 实例数据:存储对象真正的有效信息,在程序代码中所定义的各种类型的字段内容(无论是从父...
2018-02-23 15:18:58 215 1
翻译 JAVA对象的创建
在java编程中,在语言层面上,我们仅仅通过一个new关键字就可以创建对象,在java虚拟机中对象的创建又是怎样的一个过程呢? 虚拟机遇到一条new指令时,首先检查该指令的参数能否定位到一个类的符号引用,并且检查这个符号引用所代表的类是否已经被加载、解析、初始化过,如果没有,则必须先要执行类的加载过程。 类加载完成后,后面就是为该新对象分配一块内存空间。 分配方式有两种: ...
2018-02-23 14:58:42 181
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人