手动启动数据源后需要在手动关闭吗?

手动启动数据源后需要在手动关闭吗?

[背景]

将数据从datasource1查询出,处理后,导入到datasource2

[问题]

image.png

image.png

代码如上图所示,操作完成后main方法就会终结

start 是启动数据源,fromDatasource1ToDatasource2查询数据,处理数据,插入数据

1.main方法执行完成后不显式调用arp1,arp2,plugin1,plugin2的stop方法,数据库的连接池是会释放吗?

2.如果显式调用,调用arp1的stop()之后还需要显式调用plugin1的stop吗?

评论区

杜福忠

2020-09-23 09:34

线程都结束了,池子对象也就不在了。DruidPlugin最好是手动关掉,如果只有一个线程工作的话,最好new DruidPlugin(...).set(1,1,1)设置一下最小值,免浪费资源

李通

2020-09-23 09:47

@杜福忠 jvm是关闭了,但是jvm关闭后会释放和mysql的连接吗?我在linux上测试会,但是在windows server 2008 r2测试却不行

李通

2020-09-23 09:47

@杜福忠 2.如果显式调用,调用arp1的stop()之后还需要显式调用plugin1的stop吗?

杜福忠

2020-09-23 11:16

@李通 需要,因为他们各自管各自的事情。DruidPlugin的stop管连接池关闭。ActiveRecordPlugin的stop是卸载Model映射关系以及Db的一些配置等。

JFinal

2020-09-23 16:06

主动调用会更好,因为连接池会告诉数据库服务端客户端这边关闭掉了,否则服务端需要通过某种机制去关闭与客户端的连接,在此之前有一定的资源占用

李通

2020-09-23 19:55

热门反馈

扫码入社