use sharing to support large unmbers of fine-grained objects efficiently(使用共享對象可有效地支持大量的細粒度的對象)
例子
public class SignInfo {
private String key;
private String id;
private String subject;
private String location;
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getLocation() {
return location;
}
public void setLocation(String location) {
this.location = location;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
public class SignInfoFactory {
private static HashMap<String,SignInfo> pool=new HashMap<String,SignInfo>();
public static SignInfo getSignInfo(String key){
SignInfo result=null;
if(!pool.containsKey(key)){
System.out.println(key+"-------------建立對象,並放到池中");
result=new SignInfo();
pool.put(key, result);
}else{
result=pool.get(key);
System.out.println(key+"---------------直接從池中取");
}
return result;
}
}
小知識
public class Client {
public static void main(String[] args) {
String state1="sub1shanghai1";
String state2="sub1shanghai2";
String state3="sub1shanghai2";
SignInfoFactory.getSignInfo(state1);
SignInfoFactory.getSignInfo(state2);
long start=System.currentTimeMillis();
for(int i=0;i<100000;i++){
SignInfoFactory.getSignInfo(state3);
}
long end=System.currentTimeMillis();
System.out.println("total time:"+(end-start)+"ms");
}
}
其他問題還有線程安全,性能平衡等等,需要經驗,這個東西只是提供一個方向,需要是還是實際開發。
不得不說這是個好東西,但是實際中,需要考慮的東西很多,這個爲了解決一些連接問題根據底層硬件以及環境而做出的最好行動,還是需要看背景和實際問題。
我是菜鳥,我在路上。