线程是操作系统能够进行运算调度的最小单位,被包含在进程之中,是进程中的实际运作单位。任务是指执行一个或多个操作来达成一个目的的工作,是业务逻辑的执行单元。
可以理解为,线程是进程中的一个独立执行的路径,而任务则是完成一定功能需求的代码集合。线程是为了执行任务而存在的。
在编程实现中,通常人们会把某些功能模块抽象出来,封装成任务,以方便复用。
而线程则是为了使这些任务能够并发执行而创建的,同一进程中有多个任务时,可以通过创建多个线程,将不同的任务交由不同的线程来处理,从而提高效率。
(1)任务是由业务逻辑组成的,而线程是程序执行的最小单位。
(2)任务是被抽象出来便于复用的代码集合,而线程是为了使这些任务能够并发执行而创建的。
(3)任务在程序编写时就已经确定,而线程在执行过程中动态创建和撤销。
(4)线程是一种与任务无关的系统资源,仅用于在线程之间切换和调度,而任务则是与业务逻辑相关的具体实现。
在程序执行中,任务调度是针对“业务逻辑”进行调度的,而线程调度是针对“线程”进行调度的。
由于一个任务可以包含多个线程,因此任务调度需要考虑线程之间的协作和同步。(比如,保证同一时间只有一个线程访问共享资源)
而线程调度本质上只是为了确保不同线程的运行不会互相干扰。它通常采用时间片轮转算法,按照优先级或时间片大小切换线程的执行,以实现多个线程的并发处理。