我只有两个短期任务在应用程序启动时在后台运行。为每个任务或执行程序使用线程是否有意义,例如,单个线程执行程序来提交这两个任务。
创建两个快速死亡的线程是否有意义,而没有一个线程执行器在应用程序的整个生命周期中等待任务时没有?
答案 0 :(得分:2)
使用线程池的一大好处是,您可以避免出现重复执行某项任务的情况,如果该任务出现问题导致线程挂起,您将面临失去的风险每次任务发生时一个线程,导致应用程序运行线程。如果您的线程仅在启动时运行一次,那么风险似乎不适用于您的案例。
你仍然可以使用Executor,但是一旦你的任务都运行就关闭它。最好在原始线程上使用Futures或CompletionService。
答案 1 :(得分:1)
如果您在应用程序中多次执行此操作,ThreadPoolExecutor
绝对值得一看。
一个好处是线程池。这会释放运行时以在每次需要线程时创建和销毁OS对象。此外,您可以控制产生的线程数量 - 但这似乎不是您的大问题 - 并且线程正在运行/完成。
但是如果你真的只在应用程序的运行时产生两个线程,那么执行程序可能会超大,但是它们使用起来非常舒服。
自Nathan添加Futures以来,还有Timer
和TimerTask
。对于" Fire and Forget"也非常方便。背景动作的类型: - )。