我有将接收到的 UDP 数据包存储在文件中的应用程序,并将每个数据包的接收时间与每个数据包一起存储。我System.currentTimeMillies()
用来在收到数据包时获取接收时间。
我需要存储时间,因为当我在 UDP 上传输这个文件时,我将从文件传输每个数据包,与每个数据包存储的时间同步。
问题是,如果我在接收和存储数据包时更改系统日期和时间,发送文件时的同步就会混乱。
因此,我需要为每个接收到的数据包加上时间戳,而与系统日期和时间无关。这样在发送时,即使系统日期和时间在接收时发生变化,发送速率也会同步。
我知道这些可以用 来实现System.nanoTime()
,但是使用它安全吗?我认为System.nanoTime()
在不同的系统架构和操作系统上可能并不准确。
另外,如果我使用System.nanoTime()
,这个时钟将如何开始(初始值),因为我不希望它在程序运行时以最后一个值结束。如果第一次调用System.nanoTime()
时钟从 0 开始,这个时钟可以运行大约 290 年,然后以最后一个值结束。
有什么替代方法System.nanoTime()
吗?我需要以毫秒为单位的时钟精度。
另外我需要这个时钟独立于系统运行,因为我可能正在从其他机器传输文件。此外,它不应该将时间扭曲数天或数月,永远不要在不同的系统之间。
谢谢