spring定时任务@Scheduled,异步操作@Async

需求时定时更新项目里面某一个设备的状态。

1.定时任务:spring定时任务@Scheduled(cron = "50 * * * * ? ")

2.更新状态采用异步更新,java默认是同步的,异步采用spring的@Async("async_update_gbStatus")

上代码spring配置xml实现定时任务,实现异步。


    
    
    
    

在需要定时的方法上面加入@Scheduled(cron = "50 * * * * ? ")

@Component//会把这个类注入到spring中管理
@Service
@Lazy(false)
public class Test1{
    @Scheduled(cron = "50 * * * * ? ") //50秒后执行
    public void gbStatus(){
        /*执行的异步方法,异步方法和当前调用的方法不能在同一个类中
            否则无法实现异步,官方文档有说明。*/
         asyncMethod();    
    }
}

在异步方法中加上@Async("async_update_gbStatus")括号里面的值和xml里面的id也就是这个标签task:executor的id值一致。

@service
public class Test2{
    @Async("async_update_gbStatus")//之前没加里面括号里面的值会一起很多线程,最后会出错
    public asycMethod(){
        // 业务       
    }

}

 

你可能感兴趣的:(springmvc)