我处于多个线程(来自同一个 JVM)正在写入同一个文件(使用 Logger 进行日志记录)的情况。我需要在某个时候删除这个文件,下次使用 logger 将创建文件和日志。
日志库是同步的,因此我不需要担心并发日志记录到同一个文件。
但是......我想添加一个操作这个文件的外部操作,这个操作是删除文件,因此我必须以某种方式将日志记录(Logger)与这个删除操作同步,因为我不想同时删除文件记录器正在工作。
我想到的事情:
使用FileChannel.lock锁定文件,Logger 也会这样做。我决定反对这个,因为这个:
代表整个 Java 虚拟机持有文件锁。它们不适合控制同一虚拟机内的多个线程对文件的访问。
这意味着在我的情况下(相同的 JVM,多线程)这不会导致我想要的效果。
我有哪些选择?
我在这里错过了一些重要的东西吗?
也许有一种方法可以使用 Logger 中已有的东西来做到这一点?
慕森卡
繁华开满天机
子衿沉夜
相关分类