Spring之十三 线程池
来源:互联网 发布:常州学美工设计 编辑:程序博客网 时间:2024/06/13 05:07
线程池 ThreadPoolTaskExecutor
1.applicationContext.xml中配置
<bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor"> <!--线程池活跃的线程数--> <property name="corePoolSize" value="5" /> <!--线程池最大活跃的线程数--> <property name="maxPoolSize" value="150" /> <!--任务队列的最大容量--> <property name="queueCapacity" value="5000" /> <!--线程池维护线程所允许的空闲时间--> <property name="keepAliveSeconds" value="60" /> <!-- 线程池对无线程可用的处理策略--> <property name="rejectedExecutionHandler"> <bean class="java.util.concurrent.ThreadPoolExecutor$CallerRunsPolicy" /> </property> </bean>
2.使用
TaskExecutor taskExecutor = (TaskExecutor)SpringContextUtil.getBean("taskExecutor");taskExecutor.execute(new personRunner());
守护线程
1.实现ThreadFactory接口
public class HelloThreadFactory implements ThreadFactory{ private final static HelloThreadFactory instance = new HelloThreadFactory(); private final ThreadGroup group; /** * 构造函数 */ public HelloThreadFactory() { this(null); } public HelloThreadFactory(ThreadGroup group) { if(group == null){ SecurityManager s = System.getSecurityManager(); this.group = (s != null) ? s.getThreadGroup() : Thread.currentThread().getThreadGroup(); }else{ this.group = group; } } public static HelloThreadFactory getInstance(){ return instance; } @Override public Thread newThread(Runnable r) { Thread t = new Thread(group, r); return t; } //启动守护线程 public void startDaemonThread(Thread t, String threadName){ if(null == t){ return; } t.setDaemon(true); t.setName(threadName); t.start(); }}
2.使用线程工厂创建线程
@Componentpublic class HelloInit { public void init(){ HelloThreadFactory threadFactory = HelloThreadFactory.getInstance(); Thread testThread = threadFactory.newThread(new TestThread()); threadFactory.startDaemonThread(testThread, "test"); }}
3.在Spring的监听文件中初始化
public class SystemListener extends ContextLoaderListener{ @Override public void contextInitialized(ServletContextEvent event) { //启动spring环境 super.contextInitialized(event); HelloInit helloInit = (HelloInit)SpringContextUtil.getBean(HelloInit.class); helloInit.init(); }}
注:若不使用线程工厂,需要new Thread
Thread thread = new Thread(new TestThread());thread.setDaemon(true);thread.start();
0 0
- Spring之十三 线程池
- netty源码分析 之十三 线程模型
- linux下c/c++实例之十三C实现的简单的线程池
- Chrome源代码分析之线程模型续1(十三)
- 进阶篇:线程并行与等待之CyclicBarrier(十三)
- java线程安全之并发Queue(十三)
- Spring Framework 开发参考手册 之十三 集成表现层
- 案例学习BlazeDS+Spring之十三:JMS Chat
- 深入理解Spring系列之十三:IntrospectorCleanupListener解析
- Spring Boot学习之旅:(十三)模版引擎-FreeMarker
- 十三、Java线程基础
- shell十三问之十三
- Spring(十三)转账实例
- Spring 线程池使用
- Spring 线程池
- Spring线程池
- spring处理线程池
- spring 线程池
- activity alias又是什么鬼
- IOS ipa安装(十)- iTunes 安装ipa
- nginx服务器http重定向到https的正确写法
- ByteBuffer用法小结
- android的 UI 布局总结
- Spring之十三 线程池
- linux解决xhost: unable to open display
- 打印机模拟器下载
- java学习二:流程控制
- 电话面试3 20160331_1406_35min
- nine great statistics papers
- Unity中NGUI出现边缘线条的解决办法
- 序列化的作用
- StdRandom库中的静态方法的实现--随机数产生