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 + -
显示快捷键?