Bai_yk的gravatar头像
Bai_yk 2015-08-31 15:35:46

java Web项目中什么场景中会用到java多线程?

javaWeb项目中什么场景中会用到多线程?如题,请说的详细点。如果有这方面的项目请牛牛们分享下研究下。

所有回答列表(5)
遇见,的gravatar头像
遇见,  LV36 2015年8月31日

发邮件, 记录日志, 发短信等等。

其实几乎所有地方都能用,但是如果和业务数据相关的用的话要考虑并发问题。

所以如果你的应用访问量一般的话就用到上面的那些上就可以。

temptation的gravatar头像
temptation  LV16 2015年9月1日

与主业务耦合性滴,比如发邮件是个耗时的操作,如果在主业务中即要记录用户信息,又需要发邮件来通知用户,而且用户等待收取邮件,那么这是一个耗时的操作,对用户体验不好,这时就可以开启一个独立线程来发送邮件。

同时要注意事务问题。。因为事务是基于threadlocal的,所以单独线程是不能与主业务事务同步的。(个人理解)

 

最代码官方的gravatar头像
最代码官方  LV167 2015年9月1日

异步任务的时候会有多线程的操作,比如注册成功后发激活邮件,定时任务实现计算每日贡献,每周贡献。

可以结合spring来实现异步任务操作:

<bean id="threadPoolTaskExecutor"
		class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
		<property name="corePoolSize" value="10" />
		<property name="maxPoolSize" value="30" />
</bean>

在需要异步操作的java代码中注入,然后调用execute方法即可:

@Autowired
private ThreadPoolTaskExecutor threadPoolTaskExecutor;

threadPoolTaskExecutor.execute(new Runnable() {
				public void run() {
					//发送邮件
				}
			});
Ternence的gravatar头像
Ternence 2015年9月1日

这种场景很多,像定时任务、实时事件接收,或类似售票系统,但就是要注意是否需要参数共享。

笑傲江湖的gravatar头像
笑傲江湖  LV8 2015年9月2日

 

 

顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友