怎么发布一个安全的对象引用

/*

     在介绍发布安全的对象之前,先介绍下对象的引用这个概念。   

       这里涉及到jvm的内存机制,我这里先简短的讲下:java的内存分为:栈内存与堆内存,

       其中在函数中定义的一些基本变量与对象的引用都是在函数的栈内存中分配空间,当一段代码块定义一个基本变量时,栈就为这个变量分配一个空间,超过这个变量的作用域时,java垃圾回收机制就会自动回收这个变量的空间   

       堆内存中存放着有new创建的对象和数组及一些常量(String),当在堆中产生一个空间,还可以为这个空间的首地址取一个别名放在栈内存中,这个别名我们称为:对象的引用

    内存分布怎么发布一个安全的对象引用_第1张图片

    具体的参考:http://www.cnblogs.com/xwdreamer/archive/2012/04/01/2428857.html

*/

        正确发布一个对象,实际就是保证对象的引用是安全的,    

        package com.xingyao.www.model;

        public class TestPerson {
 
             //方式一:在静态初始化中初始化一个对象的引用。

              static Person person = new Person();
             
 
             //方式二:将对象的引用保存到volatile类型的域或者atomicReferance对象中
             volatile Person person1 = new Person();
 
 
             //方式三:将对象的引用保存到某个正确的构造对象的final类型域中
             final Person person2 = new Person();
 
             //方式四:将对象的引用保存到一个由锁保护的域中
             public synchronized Person getPersonInstance() {
                  return new Person();
             }
 
        }

}

你可能感兴趣的:(java,创建对象)