Java时间戳间隙

Java时间戳间隙,java,time,activemq,Java,Time,Activemq,我在使用下面的代码时遇到一个问题。 Timestamp starttime=new java.sql.Timestamp(Calendar.getInstance().getTime().getTime()); 我有两个项目,A和B(现在它们部署在我的本地机器上),还有一个队列。A不断将对象推入队列,B不断从队列中弹出对象。我正在记录push和pop事件,并尝试将事件时间存储到数据库中 下面是数据库中的两条记录。第一列是event_id,第二列使用上述代码生成事件发生时间。我们可以看到,虽然

我在使用下面的代码时遇到一个问题。

Timestamp starttime=new java.sql.Timestamp(Calendar.getInstance().getTime().getTime());

我有两个项目,A和B(现在它们部署在我的本地机器上),还有一个队列。A不断将对象推入队列,B不断从队列中弹出对象。我正在记录push和pop事件,并尝试将事件时间存储到数据库中

下面是数据库中的两条记录。第一列是event_id,第二列使用上述代码生成事件发生时间。我们可以看到,虽然“推到队列”事件的事件id较小,这意味着它在“从队列弹出”之前插入数据库“推到队列”事件的时间比“从队列弹出”稍晚。但是,“推到队列”应该有一个较小的事件id更早的时间。你能帮我弄清楚这里发生了什么吗

223636“2017-07-07 22:27:20.129”
“localhost.localdomain”;“从队列中弹出消息”


223635“2017-07-07 22:27:20.13”
“localhost.localdomain”;“消息推送到队列”

假设输出基于,推送事件的时间确实早于pop事件。即13ns<129ns。如果A和B在不同的JVM中运行,那么仍然可以:1)发布到队列2)B弹出队列并写入数据库3)写入数据库。取决于代码和进程/线程切换。@AndrewS实际上,A和B都调用另一个项目C来存储事件