-
大小: 341KB文件类型: .rar金币: 1下载: 0 次发布日期: 2021-05-28
- 语言: 其他
- 标签: BlockingQueu newFixedThre ThreadPoolEx 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 苹果系统让其系统兼容软件修改方法
评论
共有 条评论