gpt4 book ai didi

java - 有时间限制的计算

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:33:54 26 4
gpt4 key购买 nike

我正在尝试编写一个允许我在给定时间窗口内运行计算的结构。像这样的东西:

def expensiveComputation(): Double = //... some intensive math

val result: Option[Double] = timeLimited( 45 ) { expensiveComputation() }

此处 timeLimited 将运行 expensiveComputation,超时为 45 分钟。如果达到超时,则返回 None,否则将结果包装到 Some 中。

我正在寻找一个解决方案:

  • 在性能和内存方面相当便宜;
  • 将在 当前线程中运行限时任务。

有什么建议吗?

编辑

我了解我原来的问题没有解决方案。假设我可以为计算创建一个线程(但我不喜欢使用线程池/执行程序/调度程序)。最快、最安全和最干净的方法是什么?

最佳答案

运行给定的代码块或在超时时抛出异常:

@throws(classOf[java.util.concurrent.TimeoutException])
def timedRun[F](timeout: Long)(f: => F): F = {

import java.util.concurrent.{Callable, FutureTask, TimeUnit}

val task = new FutureTask(new Callable[F]() {
def call() = f
})

new Thread(task).start()

task.get(timeout, TimeUnit.MILLISECONDS)
}

关于java - 有时间限制的计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7651293/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com