当前位置: 首页 > 知识库问答 >
问题:

异步任务Java等效

鲜于雨石
2023-03-14

一年前,我在android上做了一些事情,我想知道是否有可能把它转换成java。

来自android的代码:

private void search() {
    class GetUsers extends AsyncTask<Void, Void, String> {
        ProgressDialog loading;

        @Override
        protected String doInBackground(Void... v) {
            HashMap<String, String> params = new HashMap<>();
            params.put(Config.Key_Search, Search);
            RequestHandler rh = new RequestHandler();
            String res = rh.SendPostRequest(Config.URL_Search, params);
            Log.d("AAAA", "doInBackground: " + res);
            return res;
        }

        /**
         * After the response is given from the database
         * @param s json String
         */
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            loading.dismiss();
            showResult(s);
        }

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            loading = ProgressDialog.show(SearchActivity.this, "Searching", "Wait a sec", false, false);
        }
    }
    GetUsers getUsers = new GetUsers();
    getUsers.execute();
}

在给定参数搜索的情况下,搜索SQL数据库是非常困难的。

如有任何答复,将不胜感激。

共有1个答案

瞿文柏
2023-03-14
import java.util.concurrent.*;

ExecutorService executor = Executors.newSingleThreadExecutor();
Callable<String> task = new Callable<>() {
    public String call() {
        System.out.println("Before sleep");
        TimeUnit.SECONDS.sleep(10);
        System.out.println("After sleep");
        return "foo";
    }
}
Future<String> future = executor.submit(task);
TimeUnit.SECONDS.sleep(5);
System.out.println("Do some stuff in parallel");
String result = future.get();
 类似资料:
  • 问题内容: 我想同时下载一些文件,例如100个文件。因此,我决定将下载线程添加到调度队列中,GCD会调整同时运行多少个线程。 这里的问题是:中的块将立即完成,因为它将在另一个线程上运行。因此,如果长度为100,它将立即创建100个线程。 如何配置块以等待下载任务完成?我不想使用,因为它只允许同时运行一个下载任务。 问题答案: 要扩展Abhinav的答案,您应该: 使用创建一个组。 在开始每个下载任

  • 我只想确保我很好地理解异步await和task.run或task.whenall之间的区别 所以异步等待就是处理异步方法。它意味着隐含着一个处理顺序。 我在不阻塞主线程的情况下运行了一个很长的处理,并等待结果继续。 对于task.run和task.when,这里有一个多线程的新概念。这意味着我可以在一个新线程上启动一个长进程,它不会等待完成来继续代码。代码在新线程上。在这个线程上,我可以等待方法。

  • 我有一组从基类继承的命令。基类有以下声明: 此异步方法缺少“await”运算符,将同步运行。考虑使用'await'运算符来等待非阻塞API调用,或者使用'await task.run(...)'在后台线程上执行CPU绑定的工作。 显式提供任务完成返回值是否正确?

  • 主要内容:本节引言:,1.相关概念,2.AsyncTask全解析:,3.AsyncTask使用示例:,本节小结:本节引言: 本节给大家带来的是Android给我们提供的一个轻量级的用于处理异步任务的类:AsyncTask,我们一般是 继承AsyncTask,然后在类中实现异步操作,然后将异步执行的进度,反馈给UI主线程~ 好吧,可能有些概念大家不懂,觉得还是有必要讲解下多线程的概念,那就先解释下一些概念性的东西吧! 1.相关概念 1)什么是多线程: 答:先要了解这几个名称:应用程序,进程,线程,

  • 我正在用。NET核心编写一个ASP.NET MVC站点。我试图封装一些常见的异常处理。在基类中,我有这个方法。 从继承自该基类的控制器中,我使用如下方法: 假设_someservice.getAsync()方法如下: 这工作得很好,将捕获基类方法中的异常并返回NotFound结果。 但是,我希望避免从SomeService.GetAsync方法调用。result。我读到的任何地方都说不要那样做,因

  • 问题内容: 我是一名普通的C#开发人员,但有时我会使用Java开发应用程序。我想知道是否有Java等效于C#async / await?简单来说,java相当于什么: 问题答案: 不,在Java中-甚至在v5之前的C#中,都没有等效的异步/等待方式。 在后台构建状态机是一项相当复杂的语言功能。 Java中对异步/并发的 语言 支持相对较少,但是该软件包包含许多与此相关的有用 类 。(不完全等同于任