-
大小: 341KB文件類型: .rar金幣: 2下載: 0 次發布日期: 2021-05-28
- 語言: 其他
- 標簽: FutureTask??
資源簡介
定義全局線程池,將用戶的請求放入自定義隊列中,排隊等候線程調用,等待超時則自動取消該任務,實現超時可取消的異步任務

代碼片段和文件信息
package?com.test.filter;
import?java.io.IOException;
import?java.text.SimpleDateFormat;
import?java.util.concurrent.BlockingQueue;
import?java.util.concurrent.ExecutorService;
import?java.util.concurrent.Executors;
import?java.util.concurrent.linkedBlockingQueue;
import?java.util.concurrent.ThreadPoolExecutor;
import?java.util.concurrent.TimeUnit;
import?javax.servlet.Filter;
import?javax.servlet.FilterChain;
import?javax.servlet.FilterConfig;
import?javax.servlet.ServletException;
import?javax.servlet.ServletRequest;
import?javax.servlet.ServletResponse;
import?org.apache.log4j.Logger;
public?class?ThreadPoolFilter?implements?Filter?{
private?static?SimpleDateFormat?smf?=?new?SimpleDateFormat(“yyyy-MM-dd?HH:mm:ss.sss“);
private?static?BlockingQueue?waitqueue?=?new?linkedBlockingQueue();
private?static?BlockingQueue?queue?=?new?linkedBlockingQueue();
private?static?ThreadPoolExecutor?executor;
private?static?ExecutorService?es?=?Executors.newFixedThreadPool(1);
private?static?Logger?logger?=?Logger
.getLogger(ThreadPoolFilter.class.getName());
public?static?void?setWaitqueue(Runnable?runnable)?{
waitqueue.add(runnable);
}
@Override
public?void?init(FilterConfig?fConfig)?throws?ServletException?{
int?corePoolSize?=?Integer.parseInt(fConfig.getInitParameter(“corePoolSize“));
int?maxMumPoolSize=Integer.parseInt(fConfig.getInitParameter(“maxMumPoolSize“));
long?keepAliveTime=Long.parseLong(fConfig.getInitParameter(“keepAliveTime“));
executor=?new?ThreadPoolExecutor(corePoolSize?maxMumPoolSize?keepAliveTime?TimeUnit.SECONDS?queue);
es.execute(new?Runnable()?{
@Override
public?void?run()?{
while?(true)?{
while?(waitqueue.size()?>?0)?{
try?{
logger.info(“waitqueue:“?+?waitqueue.size());
Runnable?task?=?waitqueue.take();
executor.submit(task);
logger.info(“queue:“?+?queue.size());
}?catch?(InterruptedException?e)?{
e.printStackTrace();
}
}
}
}
});
System.out.println(“init?ThreadPoolExecutor....“);
}
@Override
public?void?destroy()?{
try?{
executor.shutdownNow();
}?catch?(Exception?e)?{
//?TODO:?handle?exception
}
try?{
es.shutdownNow();
}?catch?(Exception?e)?{
//?TODO:?handle?exception
}
System.out.println(this.getClass().getName()+“:shutdown?success“);
}
@Override
public?void?doFilter(ServletRequest?request?ServletResponse?response?FilterChain?chain)
throws?IOException?ServletException?{
chain.doFilter(request?response);
}
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????1139??2019-11-25?10:35??TestQueue\.classpath
?????文件???????1059??2019-11-25?10:35??TestQueue\.project
?????文件????????564??2019-11-25?10:35??TestQueue\.settings\.jsdtscope
?????文件?????????62??2019-11-25?10:36??TestQueue\.settings\com.genuitec.eclipse.modernweb.common.core.prefs
?????文件?????????57??2019-11-25?10:36??TestQueue\.settings\org.eclipse.core.resources.prefs
?????文件????????364??2019-11-25?10:35??TestQueue\.settings\org.eclipse.jdt.core.prefs
?????文件????????486??2019-11-25?10:35??TestQueue\.settings\org.eclipse.wst.common.component
?????文件????????396??2019-11-25?10:35??TestQueue\.settings\org.eclipse.wst.common.project.facet.core.xm
?????文件?????????49??2019-11-25?10:35??TestQueue\.settings\org.eclipse.wst.jsdt.ui.superType.container
?????文件??????????6??2019-11-25?10:35??TestQueue\.settings\org.eclipse.wst.jsdt.ui.superType.name
?????文件???????2642??2019-11-25?10:37??TestQueue\src\com\test\filter\ThreadPoolFilter.java
?????文件???????2468??2019-11-25?10:42??TestQueue\src\com\test\servlet\FurtureTaskTest.java
?????文件????????471??2019-11-25?10:45??TestQueue\src\com\test\servlet\ResultDemo.java
?????文件???????3697??2019-11-25?11:40??TestQueue\src\com\test\servlet\TestServlet.java
?????文件????????834??2019-11-25?10:35??TestQueue\WebRoot\index.jsp
?????文件?????????39??2019-11-25?10:35??TestQueue\WebRoot\me
?????文件???????1658??2019-11-25?10:38??TestQueue\WebRoot\WEB-INF\classes\com\test\filter\ThreadPoolFilter$1.class
?????文件???????4103??2019-11-25?10:38??TestQueue\WebRoot\WEB-INF\classes\com\test\filter\ThreadPoolFilter.class
?????文件???????2867??2019-11-25?10:42??TestQueue\WebRoot\WEB-INF\classes\com\test\servlet\FurtureTaskTest.class
?????文件????????996??2019-11-25?10:45??TestQueue\WebRoot\WEB-INF\classes\com\test\servlet\ResultDemo.class
?????文件???????1569??2019-11-25?10:42??TestQueue\WebRoot\WEB-INF\classes\com\test\servlet\TaskCallable.class
?????文件???????1993??2019-11-25?11:40??TestQueue\WebRoot\WEB-INF\classes\com\test\servlet\TestServlet$1.class
?????文件???????1671??2019-11-25?11:40??TestQueue\WebRoot\WEB-INF\classes\com\test\servlet\TestServlet$TestCallable.class
?????文件???????4411??2019-11-25?11:40??TestQueue\WebRoot\WEB-INF\classes\com\test\servlet\TestServlet.class
?????文件?????367444??2019-11-25?10:38??TestQueue\WebRoot\WEB-INF\lib\log4j-1.2.14.jar
?????文件???????1365??2019-11-25?11:37??TestQueue\WebRoot\WEB-INF\web.xm
?????目錄??????????0??2019-11-25?10:38??TestQueue\WebRoot\WEB-INF\classes\com\test\filter
?????目錄??????????0??2019-11-25?10:58??TestQueue\WebRoot\WEB-INF\classes\com\test\servlet
?????目錄??????????0??2019-11-25?10:38??TestQueue\WebRoot\WEB-INF\classes\com\test
?????目錄??????????0??2019-11-25?10:37??TestQueue\src\com\test\filter
............此處省略15個文件信息
- 上一篇:UR優傲機器人說明書
- 下一篇:教你欺騙 Mac 蘋果系統讓其系統兼容軟件修改方法
評論
共有 條評論