小编典典

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

java

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

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

        }
    }

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

这可能吗 ??

请分享您的意见。


阅读 215

收藏
2020-11-23

共1个答案

小编典典

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

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

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

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

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

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

2020-11-23