码迷,mamicode.com
首页 > 编程语言 > 详细

Java容器-引用分类与部分Map用法

时间:2017-03-18 19:58:05      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:不能   queue   存在   void   ant   16px   weak   http   weakref   

一、目录

1、引用分类

2、了解WeakHashMap、IdentityHashMap、EnumMap

3、同步控制与只读设置

二、代码实现

1、引用分类(面试)

  强引用(StrongReference):引用指向对象,gc运行时,不回收。

  弱引用(SoftReference):gc运行时可能回收(当jvm内存不足时)。

  软引用(WeakReference):当gc运行时,对象回收。

  虚引用(phantomReference):类似于无银用,主要跟踪对象被回收的对象,不能单独使用,要与ReferenceQueue联合使用

  目的:避免对象长期驻留在内存中,解决垃圾回收机制时机问题。 

2、WeakHashMap(键若引用,回收后自动删除key-value对象)

 public static void main(String [] args){
        //结果:map的size为2,new String()为软对象被回收
        WeakHashMap weakHashMap=new WeakHashMap();
        //“key1”、“key2”存在于常量池为强对象不会被回收
        weakHashMap.put("key1","hello");
        weakHashMap.put("key2","hello2");
        weakHashMap.put(new String("key3"),"hello3");
        System.gc();
        System.runFinalization();
        System.out.println(weakHashMap.size());
    }

3、同步控制与只读操作

(1)同步控制

  因为容器中有一些是线程安全,有一些是线程不安全,那么怎么把线程不安全的容器也调整成线程安全呢?

  如:Hashtale(安全)-HashMap(不安全)             ArryList-LinkedList(不安全)-Vector(安全)

  技术分享

(2)只读操作

  1)空的不可变的集合

  技术分享

  2)一个元素不可变的集合

  技术分享

  3)不可变容器

  技术分享

Java容器-引用分类与部分Map用法

标签:不能   queue   存在   void   ant   16px   weak   http   weakref   

原文地址:http://www.cnblogs.com/qiuyong/p/6575525.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!