zoukankan      html  css  js  c++  java
  • Java容器-引用分类与部分Map用法

    目录

    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)不可变容器

      

  • 相关阅读:
    js 多物体运动
    js运动 淡入淡出
    js运动 分享到
    正则 重复项最多得子项
    jq 拖拽
    jq 弹出窗口
    jq 选项卡
    jq 写法
    Codeforces 185A Plant( 递推关系 + 矩阵快速幂 )
    HDU 2604 Queuing( 递推关系 + 矩阵快速幂 )
  • 原文地址:https://www.cnblogs.com/qiuyong/p/6575525.html
Copyright © 2011-2022 走看看