我知道线程和任务处于不同的抽象级别。但无论如何,我仍然感到困惑,他们之间的关系是什么。顺便说一句,我认为任务告诉我们如何完成工作和线程实际上根据Task实例执行作业。我的理解是否正确?谢谢你^
答案 0 :(得分:3)
我假设任务你的意思是Runnable
和Callable
。关系很简单:
线程可能用于执行多个任务
可能 - 因为你不需要一个单独的线程来执行任务(从技术上讲,一切都在一个线程内运行 - 你不需要单独的一个)
多个 - 线程可以重复使用;它可以从队列
通常一个线程执行一个Runnable
传递给Thread
构造函数或多个Callable
传递给ExecutorService
(在大多数情况下包装线程池)。
答案 1 :(得分:0)
如果Task
表示像this这样的东西,那么区别在于该任务用于运行某些类似线程的代码执行,但是具有其他属性,例如何时运行它,多少次,以及取消执行的选项,而一个线程将立即继续运行一次。
答案 2 :(得分:0)
任务相当抽象,可以作为进程或线程实现。
答案 3 :(得分:0)
您的理解是正确的。
我们可以与workflow patterns进行类比,其中任务是需要在进程中完成的事情,线程是用于处理或执行它们的资源。