在 .Net 中,如果我想异步上传文件,我只需要调用 System.Net.WebClient 类的 UploadFileAsync() 实例方法,阻塞主线程,直到它从我传递给UploadFileAsync() 方法,然后在文件上传后调用的事件处理程序内部,使用相同的等待句柄向主线程发出信号。以这种方式上传文件的好处是,还可以订阅一个事件处理程序,每次文件上传进度发生变化时都会调用该程序。
在 Java 中,是否有使用 java.net.URLConnection 类(或类似的东西)实现类似功能的直接方法?
最佳答案
是的,使用 ExecutorService
并提交Callable
对象,然后等到 future.get()
返回结果。例如:
ExecutorService executor = Executors.newSingleThreadExecutor();
Future<Foo> future = executor.submit(new Callable<Foo>()
{
@Override
public Foo call() throws Exception
{
// ...
return someFoo;
}
});
Foo result = future.get(); // result is the same as someFoo, both should refer to the same object
再次注意,future.get()
会阻塞,直到后台线程完成执行 call()
。
关于java - 发出在 Java 中异步上传文件的 HTTP 请求的最简单方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14865841/