uploadreaper.java

来自「cwbbs 云网论坛源码」· Java 代码 · 共 91 行

JAVA
91
字号
package com.redmoon.kit.util;import java.util.Vector;import java.util.Iterator;import org.apache.log4j.Logger;import java.util.Map;import java.util.Collections;import java.util.Set;import java.io.IOException;import java.io.File;public class UploadReaper extends Thread {    Logger logger = Logger.getLogger(UploadReaper.class.getName());    private static long reapInterval = 1000*60*60*6;     private static UploadReaper uploadReaper = null;    private final long expireTimeLen = 1000*60*60*6;     public UploadReaper(long reapInterval) {        this.reapInterval = reapInterval;                        this.setDaemon(true);                start();    }    public static long getReapInterval() {        return reapInterval;    }        public static synchronized void initInstance(long reapInterval) {        if (uploadReaper==null)            uploadReaper = new UploadReaper(reapInterval);    }    public void run() {                while (true) {                                    Map m = UploadDdxc.uploadFileInfos;            Set s = m.keySet();             Vector expireUfis = new Vector();            synchronized (m) {                 Iterator i = s.iterator();                 while (i.hasNext()) {                    UploadFileInfo ufi = (UploadFileInfo) i.next();                    if (System.currentTimeMillis() - ufi.getReceiveTime() >                        expireTimeLen) {                                                expireUfis.addElement(ufi.getFileId());                                                Vector v = ufi.getUploadThreadInfos();                        Iterator ir = v.iterator();                        while (ir.hasNext()) {                            UploadThreadInfo uti = (UploadThreadInfo) ir.next();                                                        String blockPath = FileUpload.getTmpPath() +                                               ufi.getBlockName(uti.getBlockId());                            File file = new File(blockPath);                            if (!(file.exists()))                                file.delete();                        }                    }                }                                Iterator ir = expireUfis.iterator();                while (ir.hasNext()) {                    String fileId = (String)ir.next();                    UploadDdxc.uploadFileInfos.remove(fileId);                    System.out.println("UploadReaper run: Delete UploadFileInfo " + fileId);                }            }            try {                sleep(reapInterval);            }            catch (InterruptedException ie) { }        }    }    public static synchronized UploadReaper getInstance() {        if (uploadReaper==null)            initInstance(reapInterval);        return uploadReaper;    }}

⌨️ 快捷键说明

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