我有两个java进程,进程A将数据写入文件,进程B从文件中读取数据。有时进程A没有运行,进程B需要从文件中读取现有数据,所以我不能使用套接字代替文件。
问题是,当B到达文件末尾时,读取功能立即返回,如果我在没有sleep()
的情况下重试,即使没有新数据,CPU使用率也是100%。如果我尝试使用sleep()
,响应时间和性能都不好。
当到达文件末尾时,是否有任何方法可以阻止读取,直到有新的数据写入文件,就像我在使用套接字一样?
尝试使用java.nio包的WatchService API。在这种情况下,您可以为目录中的任何修改创建观察程序。根据不同的修改会有不同的事件,您可以触发读取。