📄 cachesitemonitor.java
字号:
package msg;
import msg.*;
import java.io.*;
import java.util.*;
import java.lang.*;
import java.sql.*;
//import java.net.*;
//import java.text.SimpleDateFormat;
/**
*用来缓存站点信息
*/
public class CacheSiteMonitor implements Runnable{
static Hashtable sites=new Hashtable(); //站点
static Hashtable times=new Hashtable(); //对应站点的最新更新时间
//static public Sites instance;
//static int counter=0;
private static long monitorInterval = 5 * 60 * 1000;
private static boolean threadsOn = false;
private static long maxIdleTime=5 * 60 * 1000;
public CacheSiteMonitor(){
if(threadsOn==false){
threadsOn=true;
Thread myself=new Thread(this);
myself.start();
}
}
public void run(){
while (threadsOn){
try{
checkSites();
collectGarbage();
Thread.sleep(monitorInterval); //
}catch (InterruptedException e1) {}
catch (Exception e) {
}
}
}
static public Site getSite(String domain){
times.put(domain,new Long(System.currentTimeMillis() )); //更新时间
return (msg.Site)sites.get(domain);
}
static public void addSite(String domain,msg.Site site){
sites.put(domain,site);
times.put(domain,new Long(System.currentTimeMillis() ));
}
static public void removeSite(String domain){
times.remove(domain);
sites.remove(domain);
}
private void checkSites(){
Enumeration enu=times.keys();
String domain=null;
long lastTime=0;
while(enu.hasMoreElements()){
try{
domain= (String)enu.nextElement();
lastTime=((Long)times.get(domain)).longValue();
if(lastTime < System.currentTimeMillis()-maxIdleTime){
removeSite(domain);
}
}catch(Exception e){}
}
}
static public String getAllSites(){
Enumeration enu=sites.keys();
StringBuffer sb=new StringBuffer();
//sb.append("counter:"+counter++);
while(enu.hasMoreElements()){
sb.append( (String)enu.nextElement() );
sb.append("<br>");
}
return sb.toString();
}
//释放垃圾内存
private void collectGarbage(){
Runtime.getRuntime().gc();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -