【发布时间】:2016-01-05 08:45:01
【问题描述】:
我正在开发一个 servlet,我需要为每个请求提供一个唯一的请求,并将每个请求参数存储在审计表中。 如果我尝试通过查看表中的前一个 id 来增加一个值,我担心数据库表上的脏读操作。 我想知道是否在请求到达 servlet 时使用以毫秒为单位的时间来解决这个问题。 恐怕如果同一 servlet 可能同时来自其他地理位置的任何其他请求,那么 java.lang.System.currentTimeMillis() 将与其他请求相同。 让我提出这个疑问的原因是我相信 servlet 的多线程行为是一次接受一个请求,然后根据某种算法跨越每个请求的 cpu 周期。
【问题讨论】:
-
如果你有一个同步的代码块,你获得了
key,那么你可以控制它。 -
感谢您提出有关同步块的问题,但我担心性能问题,所以只有我在想我们是否可以以毫秒为单位使用时间。您对 java.lang.System.currentTimeMillis() 值对于同一 servlet 同时到达的不同请求是唯一的有何评论。
-
不保证以毫秒为单位的时间是唯一的。在某些操作系统上,它甚至可能以更大的块增加。
-
感谢您对此的确认。我将尝试与 synchronized (this) { } 妥协并实现逻辑
标签: java multithreading uniqueidentifier