我在项目中加了一个redisson分布式锁,然后为相关程序上锁解锁 由于以前项目没有引用该jar包,且是老项目 jar包需要手动添加,然后我去maven网站下载了redisson相关jar包,发现如果直接使用该jar包会有一些类找不到,于是我用idea里的maven自己打包出相关的jar包 如下
然后丢到服务器上启动后可以正常启动,但是关闭服务后,会出现一个占用线程的错误 如图
导致重启服务的时候 需要手动kill进程才可以重启服务,请问怎么解决
这个错误提示是因为你的应用在启动Redisson的时候创建了一个线程,但是在关闭应用时,这个线程没有被正确停止,因此被认为是潜在的内存泄漏。
可以在关闭应用程序之前显式地关闭 Redisson 客户端,这样就可以保证所有 Redisson 客户端中的资源都被正确地关闭了。在你的代码中加入一个@PreDestroy注解的方法,这个方法将在程序关闭时自动调用,可以在这个方法中关闭 Redisson 客户端:
@Configuration
public class RedisConfig{
// ...其他配置
private RedissonClient redissonClient;
@Bean
public RedissonClient redissonClient() {
Config config = new Config();
config.useSingleServer().setAddress("redis://" + host + ":" + port);
redissonClient = Redisson.create(config);
return redissonClient;
}
@PreDestroy
public void shutdownRedissonClient() {
redissonClient.shutdown();
}
}