⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mapcache.java

📁 这是孙卫琴在"Java与面向对象编程"一书的源代码。
💻 JAVA
字号:
import java.util.*;
import java.lang.ref.*;
	
class Key {
  String id;
  public Key(String id) { this.id = id; }
  public String toString() { return id; }
  public int hashCode() { 
    return id.hashCode();
  }
  public boolean equals(Object r) {
    return (r instanceof Key)
      && id.equals(((Key)r).id);
  }
  public void finalize() {
    System.out.println("Finalizing Key "+ id);
  }
}

class Value {
  String id;
  public Value(String id) { this.id = id; }
  public String toString() { return id; }
  public void finalize() {
    System.out.println("Finalizing Value "+id);
  }
}

public class MapCache {
  public static void main(String[] args) throws Exception{
    int size = 1000;
    // 或者从命令行获得size的大小
    if(args.length > 0)size = Integer.parseInt(args[0]);    

    Key[] keys = new Key[size];  //存放键对象的强引用
    WeakHashMap<Key,Value> whm = new WeakHashMap<Key,Value>();
    for(int i = 0; i < size; i++) {
      Key k = new Key(Integer.toString(i));
      Value v = new Value(Integer.toString(i));
      if(i % 3 == 0) keys[i] = k; //使Key对象持有强引用 
      whm.put(k, v);  //使Key对象持有弱引用
    }
    //催促垃圾回收器工作
    System.gc();
    
//把CPU让给垃圾回收器线程
    Thread.sleep(8000);
  }
}


/****************************************************
 * 作者:孙卫琴                                     *
 * 来源:<<Java面向对象编程>>                       *
 * 技术支持网址:www.javathinker.org                *
 ***************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -