代码之家  ›  专栏  ›  技术社区  ›  Natalie Perret

Java 8中是否存在与.NET超时等效的无限持续时间。InfiniteTimeSpan字段?

  •  2
  • Natalie Perret  · 技术社区  · 10 年前

    所有内容都在标题中: 在Java 8中是否存在与C#超时等效的无限持续时间。InfiniteTimeSpan字段?

    有点像: https://msdn.microsoft.com/en-us/library/system.threading.timeout.infinitetimespan(v=vs.110).aspx

    我不认为所有java库都将-1ms理解为无限的时间跨度,因此它可能更多地是一个定义问题。

    为了澄清一点上下文,假设我想让线程休眠无限长的时间,而不执行无限循环,请注意,这不一定是一个现实的实际用途。

    我只是想知道Java库中是否内置了什么?

    2 回复  |  直到 10 年前
        1
  •  4
  •   aksh1618    3 年前

    作为 @Misha's answer ,这基本上是允许的最大持续时间值:

    public static final Duration MAX_DURATION = Duration.ofSeconds(
            Long.MAX_VALUE,   // Max allowed seconds
            999999999L        // Max nanoseconds less than a second
    );
    

    除此之外的任何事情都会导致

    java.lang.ArithmeticException: long overflow
    
        2
  •  3
  •   Misha    10 年前

    从…起 Duration javadoc :

    物理持续时间可以无限长。出于实用性考虑,持续时间存储有类似于“即时”的约束。持续时间使用纳秒分辨率,最大值为秒,可在长时间内保持。这比目前估计的宇宙年龄还要大。

    您当然不需要执行无限循环来挂起线程。考虑 LockSupport.park() 或中许多可用机制中的另一种 java.util.concurrent 你能更详细地描述一下你的问题吗?