使用Spring的@Async解决界面耗时操作,增强用户的体验度

2 篇文章 0 订阅

首先需要在spring的配置文件当中添加一下内容:

<!-- 定时器的线程池数量大小 -->
	<task:scheduler id="scheduler" pool-size="5" />
	<!-- 任务线程池的数量大小,core size为5,max size为15,队列容量为5,达到总线程数时抛出异常、不执行 -->
	<task:executor id="executor" pool-size="5-15" queue-capacity="5" />
	<!-- 设置定时任务注解和executor任务 -->
	<task:annotation-driven executor="executor"
		scheduler="scheduler" />

第二步:在需要的位置添加@Async注解,如果在方法上面标注@Async注解,则该方法为异步任务,如果在类上标注,则整个类的所有方法都是异步方法。例如如下代码:

        @Async
	public boolean preview() {
		Thread t=new Thread(new Runnable() {
			@Override
			public void run() {
				System.out.println("后台任务");
			}
		});
		t.start();
		for(int i=0;i<10;i++) {
			try {
				t.sleep(2000);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
		return true;
	};

前台的代码该例子使用的是ajax提交参数,controller层的处理和普通情况一样就补贴代码了。

$.ajax({
			url : '${pageContext.request.contextPath}/customer/preview',
			type : 'POST',
			dataType:'json',
			data : {
				id:123
			},
			contentType : 'application/json',
			success : function(data) {
				if(data=="success")
					alert("success");
				else
					alert("error");	
			},
			error : function() {
				alert("错误");
			}
		});

点击超链接时触发该ajax方法:

<a href="javascript:void(0);" class="easyui-linkbutton"
				iconCls="icon-preview" plain="true" οnclick="previewObject();">预览客户</a>
这样用户在前端页面点击超链接之后,还可以进行其他操作,刷新和切换页面都不影响后台任务正常执行。后台异步任务可以多个一起执行。该例子比较简单,service层使用的简单操作来达到效果,可以在service层进行耗时操作,方便用户的操作体验,而不至于在一个页面卡死很长时间。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值