在Java 8中是否有一个无限的持续时间等同于.net超时?InfiniteTimeSpan字段

本文关键字:net 等同于 超时 字段 InfiniteTimeSpan 持续时间 Java 是否 无限 有一个 | 更新日期: 2023-09-27 18:13:55

一切都在标题中:Java 8中是否有一个无限的持续时间,相当于c#的超时时间?InfiniteTimeSpan字段?

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

我不认为-1 ms在所有java库中被理解为无限的时间跨度,所以它可能更多的是一个定义问题。

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

我只是想知道有什么内置在Java库?

在Java 8中是否有一个无限的持续时间等同于.net超时?InfiniteTimeSpan字段

作为@Misha回答的扩展,这实际上是允许的最大持续时间值:

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

From Duration javadoc:

物理持续时间可以是无限长的。为了实用,持续时间使用类似于Instant的约束进行存储。持续时间使用纳秒分辨率,其最大值是可以在长时间内保持的秒数。这比目前估计的宇宙年龄还要大。

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