在我的应用程序中,当用户登录时,我有这个逻辑,它将调用以下方法,并使用用户拥有的所有符号。
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 进行更高程度的控制,请使用线程池执行器 http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/ThreadPoolExecutor.html。至于配置此服务,这将取决于您的用例。您多久调用一次此方法?如果经常发生,您可能希望至少始终在池中保留一个线程。我最多不会保留超过 4 或 8 个。
因为你只是打电话sendSymbol
每半秒一次,一个线程应该足够了sendSymbols
这并不是一个非常耗时的例程。我会配置一个带有 1 个线程的固定线程池。您甚至可以重用此线程池来提交其他异步任务。
只要你别提交太多,调用的时候就会有响应sendSymbol
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)