当前位置: 首页 > 面试题库 >

如何在Java中将方法作为后台进程进行调用

从元明
2023-03-14
问题内容

在我的应用程序中,当用户登录时,我具有此逻辑,它将使用用户拥有的所有符号调用以下方法。

public void sendSymbol(String commaDelimitedSymbols) {
        try {
            // further logic
        } catch (Throwable t) {

        }
    }

我的问题是,由于此发送符号的任务可以缓慢完成,但必须完成,所以无论如何,我可以将其作为后台任务吗?

这可能吗 ??

请分享您的意见。


问题答案:

您正在寻找类似这样的东西。

    ExecutorService service = Executors.newFixedThreadPool(4);
    service.submit(new Runnable() {
        public void run() {
            sendSymbol();
        }
    });

创建执行程序服务。这将保留线程池以供重用。与每次为每个异步方法调用创建一个新线程相比,效率要高得多。

如果您需要对ExecutorService的更高程度的控制,请使用ThreadPoolExecutor。至于配置此服务,将取决于您的用例。您多久调用一次此方法?如果经常,您可能至少要一直在池中保留一个线程。我最多不会保留超过4或8。

由于您sendSymbol每半秒仅调用一次,因此一个线程应该足够,因为sendSymbols这不是一个非常耗时的例程。我将配置一个带有1个线程的固定线程池。您甚至可以重用此线程池来提交其他异步任务。

只要您提交的次数不多,您致电时就会响应sendSymbol



 类似资料:
  • 问题内容: 我目前正在为运行ubuntu的vms开发一个简单的部署脚本。所有这些机器都应该运行以jar形式提供的Java应用程序。 这是安装Java,将jar从本地计算机复制到远程计算机然后启动应用程序的脚本的相关部分: 通过java_installation.sh脚本的安装成功,scp命令也是如此。尝试通过ssh执行java_start_jar.sh中的命令时,会发生问题。java_start_

  • 问题内容: 我一直在尝试编写从串行端口读取数据的python脚本。它在命令行上运行良好,但是我需要它作为后台进程运行而没有任何命令行界面。该脚本有一个while循环,该循环从串行端口读取下一个数据字节,并相应地模拟按键。为了使按键可以专注于当前窗口而不是python命令行,我需要脚本作为后台进程运行。我在这里读的答案很少,但是没有什么让我振奋。请指出正确的方向。 问题答案: 在Windows上,您

  • 问题内容: 我通过腻子SSH连接到linux服务器。我试图将其作为这样的后台进程运行: 但是,在2.5小时后,终端变为非活动状态,该过程终止。无论如何,即使在终端断开连接的情况下,我仍然可以保持该过程正常进行吗? 编辑1 实际上,我尝试过,但是一旦关闭Putty SSH终端或拔出Internet插头,服务器进程就会立即停止。 在腻子里我有什么需要做的吗? 编辑2(2012年2月) 永远有一个模块。

  • 问题内容: 我想使用ffmpeg在php中将视频转换为.flv。目前,我正在执行此操作,但是它会挂起浏览器,直到文件上传完毕。我一直在寻找有关如何在后台运行exec()进程的php文档,同时使用返回的PID更新进程。这是我发现的: 我还使用一个技巧来跟踪后台任务是否正在使用返回的PID运行: 我是否想创建一个单独的.php文件,然后从php cli运行以执行以下功能之一?我只需要稍微推动一下即可开

  • 问题内容: 我正在尝试将Shell脚本移植到可读性更高的python版本。原始的shell脚本在后台使用“&”启动多个进程(实用程序,监视器等)。如何在python中达到相同的效果?我希望这些过程在Python脚本完成后不会消失。我敢肯定它与守护程序的概念有关,但是我找不到如何轻松实现此目的。 问题答案: 注意:此答案的最新版本比2009年发布时要少。现在建议在文档中使用其他答案中显示的模块 (请

  • 我需要在服务器上运行一个java jar,以便在两个应用程序之间进行通信。我写了两个shell脚本来运行它,但是一旦我启动了这个脚本,我就不能关闭/终止这个进程。如果我按ctrlC或关闭控制台,服务器将关闭。有人能帮我如何修改这个脚本以作为普通服务器运行吗?