帖子
问答
专栏
关注
粉丝
- 2024-07-18目前遇到一个线程池的场景 背景:通过@Bean注解声明了一个自定义的线程池,在项目中,跑任务方法会通过@Async注解指定该线程池进行异步执行。 问题:在服务宕机、掉电、重启场景中,怎么保证未执行完的测试中的任务能正常推进?让其正常执行完,或直接转为 失败的状态? 目前想到的通过定时任务扫表更新测试中状态,老表们有什么比较好的解决方法吗?查看全文鱼友0412:你在使用线程池的场景中遇到的问题很常见。为了确保线程池中任务的状态能正常推进,我建议你考虑以下几点:1. 确保任务的持久性:要保证任务在宕机、掉电、重启等场景中能够恢复并继续执行,你可以使用持久化技术,如将任务信息存储在数据库或消息队列中。当应用程序重新启动时,你可以从数据库或消息队列中读取未执行完的任务,并继续执行。2. 定时任务扫表更新状态:你可以使用定时任务来扫描数据库或消息队列,然后更新任410分享
- 2023-08-24查看全文在项目中遇到这么一个场景: 一个子系统用到了别的系统的redis缓存数据,但是别的系统的在缓存数据时,用到的key、value 序列化器组合是不一样的。子系统现有一个业务处理,需用到多个系统的redis缓存,在每次获取缓存数据前,都需手动设置RedisTemplate的序列化器,才能取出对应系统的数...鱼友0412:可以理解为,你的子系统中RedisTemplate 是一个单例的 bean,然后当在并发清况下,序列化器没有和其他系统的对应上,然后就出现了这样的问题对吧。我觉得可以这样处理,如果你的业务处理是针对单次的,你可以用一个 ThredLocal ,线程局部变量来控制序列化器,这样可以保证并发的问题。如果你的业务需要同时用到多个其他的系统的数据,那个从源头出发,既然是因为 bean 是单例而造成的,那么920分享
怎么保证线程池中任务状态能正常推进?
在项目中遇到这么一个场景: 一个子系统用到了别的系统的redis缓存数据,但是别的系统的在缓存数据时,用到的key、value 序列化器组合是不一样的。子系统现有一个业务处理,需用到多个系统的redis缓存,在每次获取缓存数据前,都需手动设置RedisTemplate的序列化器,才能取出对应系统的数据。但是这种每次获取前手动设置方式,在我本地实测之后,发现很容易触发缓存数据转换对象失败的问题(猜测是并发的问题)。请问各位鱼友,如果不改变其他系统的情况下,这种场景该如何设计呢? 技术 项目 Java #提问#


