- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们有一个主进程写入日志的情况。
然后,它产生多个写入其自己的日志的工作进程。 (我希望工作人员可以通过管理员进行登录,但是由于某种原因,对此想法产生了抵制。)
我想知道的是,我是否可以相信以多个文件结尾的时间戳彼此一致?即,如果我将日志文件按即时合并到单个文件中,事件的顺序是否正确?在所有可能的操作系统上?
我问这个问题的原因是我有一个奇怪的情况,在主服务器报告该工作程序有错误后两秒钟,似乎一个工作进程记录了一个错误。就像大师能够看到 future 一样。 (我想主人也是一位时间贵族,但是...)
最佳答案
对 System.currentTimeMillis
的调用及其现代替换Instant.now
都捕获了主机操作系统和底层计算机时钟硬件报告的当前时刻。 Javadoc和源代码 promise “基于最佳可用系统时钟”提供时钟。
因此,不应该,没有不能进入 future 的。每次调用这些方法中的任何一个,都将捕获当前时刻。
但是,您可能会看到跳入 future 的幻想。由于以下原因,可能会发生这种情况:
package work.basil.example;
import java.time.Instant;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.Future;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class TellTime
{
public static void main ( String[] args )
{
TellTime app = new TellTime();
app.demo();
}
private void demo ( )
{
ExecutorService executorService = Executors.newCachedThreadPool();
int countThreads = 15;
List < Callable < Object > > tasks = new ArrayList <>( countThreads );
for ( int i = 0 ; i < countThreads ; i++ )
{
Runnable tellTimeRunnable = ( ) -> System.out.println( Instant.now() );
tasks.add( Executors.callable( tellTimeRunnable ) );
}
try
{
List < Future < Object > > list = executorService.invokeAll( tasks );
}
catch ( InterruptedException e )
{
e.printStackTrace();
}
}
}
我第一次运行该代码时,在输出的后两行中发现了这种跳跃。第四行显示的时间早于第三行。第5行显示的时间更早。
2020-11-23T01:07:34.305318Z
2020-11-23T01:07:34.305569Z
2020-11-23T01:07:34.305770Z
2020-11-23T01:07:34.305746Z
2020-11-23T01:07:34.305434Z
在我的情况下,对
System.out.println
的调用在执行上被延迟,因此稍后会报告一些较早的时刻。同样,我怀疑在您的情况下,记录捕获的时刻的行为涉及各种延迟,因此一些较早的时刻会在以后记录。
Instant.now
的调用访问当前分配的
Clock
实现。通过“当前分配”,我指的是在java.time中可以覆盖默认的
Clock
对象的事实。通常,这仅用于测试目的。各种
Clock
对象可以报告
a fixed moment,
a shifted moment,也可以报告
an altered cadence。
Clock
对象,则备用
Clock
可能会故意告诉其他时间。默认情况下,尽管总是在执行方法调用时获得当前时刻。
关于java - `System.currentTimeMillis()`在多个进程中是否正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64961179/
我正在用 Java 开发一个简单的 2D 游戏,一切正常。为了找到正确的 FPS 刷新/重绘/更新,我使用 currentTimeMillis 来查找差异。 问题是currentTimeMillis有
这只是我目前正在工作的一部分,我想使用 currentTimeMillis() 打印要加载图像的时间,有什么原因导致它不起作用? package method; import java.io.Prin
在我的应用程序中,我需要解析一个包含事件结束时间的 JSON。当此事件正在进行时,我需要计算完成该事件所需的时间。为此,我使用了这段代码: // I get the time and convert
我正在尝试使用 System.currentTimeMillis() 将毫秒转换为秒; System.out.println((int) System.currentTimeMillis() / 10
我正在使用 TestNG 编写单元测试。问题是当我模拟 System.currentTimeMillis 时,它返回实际值而不是模拟值。理想情况下,它应该返回 0L ,但它返回实际值。我应该怎么做才能
我正在尝试使用以下方法计算从现在起 100 天的时间: import java.util.Date; public class Main { public static void main(S
我们有一个主进程写入日志的情况。 然后,它产生多个写入其自己的日志的工作进程。 (我希望工作人员可以通过管理员进行登录,但是由于某种原因,对此想法产生了抵制。) 我想知道的是,我是否可以相信以多个文件
是否实现了方法System.currentTimeMillis()来对底层操作系统进行系统调用以接收当前时间? 我这么问是因为据我所知,该方法运行得相当快,只需要 6 个 CPU 时钟,但这没有意义,
因此,在我的 java 类(class)中,我们有一个作业,要求使用 System.currentTimeMillis 来显示单击之间的时间量。我已经尝试过了,但它不起作用。这是我的代码。 1 /*
我们正在使用一个 Web 服务,该服务通常需要 30-40 毫秒的时间。在该 Web 服务内,我们调用 System.currentTimeMills 38 次,以计算该服务内各种方法所花费的时间。
我正在尝试在名为 Point 的对象类上运行此测试(以提高计算速度),其中包含一些方法。它在其构造函数中接受三个输入/变量Point(String, double, double)。 我有这个想法,但
我想使用 System.currentTimeMillis() 比较两个不同的时间戳。 基本上我想检查时间戳是否在特定日期的 3 小时范围内。 如何做到这一点? 最佳答案 考虑到您有time1和tim
我正在创建一个文本文件,其中的时间戳源自 System.currentTimeMillis() 的结果。我的算法是这样的: 创建文件并记录创建时间戳 每次按下按钮时保存时间戳 从按钮按下时间戳中减去文
public class Clock { int second; int minute; int hour; boolean checkTime = true;
我需要获取 Java 中函数的执行时间。我知道可以使用两种方法:currentTimeMillis(); 和 nanoTime(); 但我了解到,如果我需要挂钟时间,currentTimeMillis
任何人都可以帮忙解释为什么它不打印时间吗? 当我尝试加载图像时?例如使用 java eclipse..currenttimemillis() 加载图像需要多长时间 我想提前向您表示衷心的感谢
出于某种原因,我得到了函数返回的一致 3600: private static long getCountdownLeft() { long now = System.currentTimeM
我需要秒表,我使用了 http://www.goldb.org/stopwatchjava.html 效果不佳,所以我尝试每 1000 毫秒写出一个值: stopWatch.start(); Hand
我正在尝试将当前时间保存到共享首选项中,但由于某种原因,当前时间在 47486 的遥远 future 年份中的数量太可笑了。 我已经检查了设备本身的日期设置,那里的日期是正确的,我在任何地方都找不到这
我的数据库中有 50000 条这样的 XML 记录: 11ca7070ad6eb3180c53281e7b597976 2011 8 6 19 26 40 utf-8 如您所见,我以分隔格式
我是一名优秀的程序员,十分优秀!