java springboot项目里自定义了一个带缓冲的流,缓冲里的字符行行数小于某个数,譬如10时,就放在缓存里而不写入文件。但是有一个问题是,有时要升级项目,重启java进程(譬如kill -9),这个时候就会把缓冲里的字符行丢弃掉,没有写入文件。
当java进程终止前,如何强制将缓冲里的字节写入文件?
java springboot项目里自定义了一个带缓冲的流,缓冲里的字符行行数小于某个数,譬如10时,就放在缓存里而不写入文件。但是有一个问题是,有时要升级项目,重启java进程(譬如kill -9),这个时候就会把缓冲里的字符行丢弃掉,没有写入文件。
当java进程终止前,如何强制将缓冲里的字节写入文件?
4 回答1.5k 阅读✓ 已解决
4 回答1.3k 阅读✓ 已解决
1 回答2.6k 阅读✓ 已解决
2 回答761 阅读✓ 已解决
2 回答1.8k 阅读
2 回答1.7k 阅读
2 回答1.3k 阅读
spring boot本身就有shutdown hook,你应该先仔细阅读官方文档: https://docs.spring.io/spring...
另外kill -9慎用,神仙难救。SIGKILL信号根本不会被程序本身捕获,而是被内核捕获强行杀死进程,根本不会触发程序内部的close handler