b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

spring 多线程_net 线程池 (线程池)threadpool_线程池与线程

电脑杂谈  发布时间:2020-01-09 02:02:28  来源:网络整理

spring 多线程_线程池与线程_net 线程池 (线程池)threadpool

多线程并发处理出来一般非常麻烦,如果你使用spring容器来管理业务bean,事情就好办了多了。spring封装了java的多线程的实现spring 多线程,你只应该关注于并发事物的流程或者一些并发负载量等特点。具体来说如何使用spring来处理并发事务:

首先编写详细的事务逻辑,实现Runnable接口,比如说

package com.andy.threadDemo;

public class ThreadTransCode

implements Runnable{

@Override

public void run() {

System.out.println("执行事务");

}

}

线程池与线程_net 线程池 (线程池)threadpool_spring 多线程

然后要做的就是配置spring容器原本提供的线程池任务执行器:

<bean

id="taskExecutor"

class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">

<property

name="corePoolSize"

value="3"

/>

<property

name="keepAliveSeconds"

spring 多线程_线程池与线程_net 线程池 (线程池)threadpool

value="200"

/>

<property

name="maxPoolSize"

value="5"

/>

<property

name="queueCapacity"

value="25"

/>

net 线程池 (线程池)threadpool_线程池与线程_spring 多线程

</bean>

配置过程中主要关注于四个属性的配置

接下来要做的事就是在应用平台原本的业务bean中使用线程池任务执行器来执行并发事务。

在对应的业务bean中注入线程池任务执行器,像普通的spring bean一样。

<bean

id="bizManager"

class="com.andy.threadDemo.BizManager"

>

<property

name="taskExecutor">

线程池与线程_net 线程池 (线程池)threadpool_spring 多线程

<ref

bean="taskExecutor"

/>

</property>

</bean>

在业务代码中,通常以for循环的方法执行多个事务

for(int k = 0; k < n; k++) {

taskExecutor.execute(new ThreadTransCode());

}

其它繁琐的线程管理的事情就交给执行器去管理。

值得注意的事有两点

1, taskExecutor.execute(newThreadTransCode()); 激活的线程都是守护线程,主线程结束,守护线程都会抛弃执行,这个在业务中式符合逻辑的,在单元测试中为了发现执行效果,需要自行阻塞主线程。

2,taskExecutor.execute(newThreadTransCode()); 的执行也不是完全安全的spring 多线程,在执行的过程中可能会因为必须的线程查过了线程队列的容量而抛出运行时异常,如有必要需要捕获。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-136266-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 悼玉
        悼玉

        现阶段美国作为一个正在衰落的超级大国他的内心是失落的

      • 元武宗
        元武宗

      热点图片
      拼命载入中...