[英]Multithreading in Java
如何知道P4机器上是否同时开始运行两个线程?
例如,您可以将开始时间存储在同步映射或哈希表(已同步)中:
static Hashtable<Long, Date> starttimes = ...;
在每个线程的run()方法中:
starttimes.put(Thread.currentThread().getId(), new Date()); //or use thread names if they are unique
然后,您可以遍历日期并进行比较。
在某些系统上,您可以假设System.nanoTime()在JVM之间是相当一致的。 这不能保证,但我发现确实如此。
但是,两个线程同时启动非常罕见,您可以放心地假设这永远不会发生。 即使对System.nanoTime()的两次调用也可以相隔100或更多纳秒。 不同线程中的两个调用不太可能返回相同的值。 即使它们做到了,您也不能保证它们同时启动 。 它们所做的只有第一件事是同时发生的(在System.nanoTime()的精度范围内)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.