Java多线程。不同线程上的System.currentTimeMillis()值相同

时间:2016-07-13 09:57:02

标签: java multithreading time

我想在多线程应用程序中使用System.currentTimeMillis()的结果来生成唯一ID。这是我的代码:

    class MyRunnableClass implements Runnable{
        @Override
        public void run() {
            long thisValueShouldBeUnique = System.currentTimeMillis ();
        }
    }

我启动了10个运行MyRunnableClass对象run()方法的线程。 是的,有时候System.currentTimeMillis ()在不同线程中的结果可能是相同的吗?

2 个答案:

答案 0 :(得分:4)

函数System.currentTimeMillis()以毫秒为单位返回当前时间。因此,如果您的线程在相同的毫秒内运行,那么此函数将返回相同的结果。因此,您可以生成类似的UUID:UUID.randomUUID()

答案 1 :(得分:2)

今天的CPU每秒可以处理大约100,000,000,000条指令,所以答案肯定是“是的,有时候不同线程中System.currentTimeMillis()的结果可能是相同的”。