gpt4 book ai didi

Java异步方法调用/后台处理

转载 作者:太空宇宙 更新时间:2023-11-04 06:40:01 25 4
gpt4 key购买 nike

[JAVA] 我有一个用例,我想知道实现它的最佳方法。我当前的实现方式如下(伪代码),但需要花费大量时间来处理:

Func (File) // Called when a file is uploaded
{

1.doSomething()
2.Result=LongRunningTask(File)
3.WriteToFS(Result)

}

现在我想取出2和3并在后台执行它们并快速返回。如果多次调用 Func() ,它应该将它们放入队列并一一执行,这样对 FS 的写入不会受到影响。我该怎么办?

最佳答案

您可以使用 ExecutorService 在后台启动任务。 submit ExecutorService中的方法接受 Callable<T>并返回 Future立即反对。您可以使用 Future对象来查询操作的进度(无论是完成、取消还是仍在运行)并在操作完成后获取操作结果。您可以通过指定给 ExecutorService 的线程池大小来管理允许的并发后台操作数量。 (线程池为 1 将允许您按照您的请求按调用顺序对后台操作进行排队,但您可以增加该数量并允许并发操作)。

查看http://www.nurkiewicz.com/2013/02/javautilconcurrentfuture-basics.html有关如何使用 ExecutorService 的一个很好的例子和Future .

关于Java异步方法调用/后台处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24803847/

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