ThreadPoolExecutor 线程池和redisson加上手动事务踩的坑
提示:线程池异步出现的问题
例如:要求搞个拼团,同时开启多个活动,每个活动最高50人参与(服务器原因,不能再多了)
一、具体活动
示例:加入线程池,开个定时器,每分钟扫描一次,拼团时间小时为单位,会自动添加机器人,
具体填充机器人时间点 是当前时间加上,活动区间/人数, 后面到活动结束了还没添加足够机器人,活动结束前最后一分钟,批量添加,
活动人满,开奖,自动续期,
0.线程池
代码如下(示例):
public static ThreadPoolExecutor activity = new ThreadPoolExecutor(30,
100, 10L, TimeUnit.SECONDS, new ArrayBlockingQueue<>(65536));
1.redisson锁 依赖
代码如下(示例):
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2.redisson锁 config文件
/**
* redis配置
*
*/
@Configuration
@EnableCaching
public class RedisConfig extends CachingConfigurerSupport {
@Bean
@SuppressWarnings(value = {
"unchecked", "rawtypes"})
public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory connectionFactory) {
RedisTemplate<Object, Object> template = new RedisTemplate<>();
template.setConnectionFactory(connectionFactory);
FastJson2JsonRedisSerializer serializer = new FastJson2JsonRedisSerializer(Object.class);
ObjectMapper mapper = new ObjectMapper();
mapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
mapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
serializer.setObjectMapper(mapper);
templat