1、功能不同

进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。

线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。

2、工作原理不同

在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。

线程是独立调度和分派的基本单位。线程可以为操作系统内核调度的内核线程,如Win32线程;由用户进程自行调度的用户线程,如Linux台的POSIX Thread;或者由内核与用户进程,如Windows 7的线程,进行混合调度。

3、作用不同

进程是操作系统中最基本、重要的概念。是多道程序系统出现后,为了刻画系统内部出现的动态情况,描述系统内部各道程序的活动规律引进的一个概念,所有多道程序设计操作系统都建立在进程的基础上。

通常在一个进程中可以包含若干个线程,它们可以利用进程所拥有的资源。在引入线程的操作系统中,通常都是把进程作为分配资源的基本单位,而把线程作为独立运行和独立调度的基本单位。

1.newCachedThreadPool:创建一个可根据需要创建新线程的线程池,但是在以前构造的线程可用时讲重用它们,并在需要时使用提供的ThreadFactory创建新线程

特征:

(1)线程池中的数量没有固定,可以达到大值(Integer.MAX_VALUE=2147483647)

(2)线程池中的线程可进行缓存重复利用和回收(回收默认时间为1分钟)

(3)当线程池中,没有可用线程,会重新创建一个线程

2.newFixedThreadPool:创建一个可重用固定线程数的线程池,以共享的无界队列方式来运行这些线程,在任意点,在大多数nThreads线程会处于处理任务的活动状态。如果在所有线程处于活动状态时提交附件任务,则在有可用线程之前,附件任务将在队列中等待,如果在关闭前的执行期间由于失败而导致任何线程终止,那么一个新线程将代替它执行后续的任务(如果需要)。在某个线程被显式关闭之前,池中的线程将一直存在

特征:

(1)线程池中的线程处于一定的量,可以很好的控制线程的并发量

(2)线程可以重复被使用,在显示关闭之前,都将一直存在

(3)超过一定量的线程被提交时需在队列中等待

3.newSingleThreadExecutor:创建一个使用单个worker线程的Executor,以无界队列方式来运行该线程。(注意,如果因为在关闭前的执行期间出现失败而终止了此单个线程,那么如果需要,一个新线程将代替它执行后续的任务)。可保证顺序地执行各个任务,并且在任意给定的时间不会有多个线程是活动的,与其他等效的``newFixedThreadPool(1)``不同,可保证无需重新配置此方法所返回的执行程序即可使用其他的线程

特征:

(1)线程池中多执行一个线程,之后提交的线程将会排在队列中以此执行

4.newSingleThreadScheduledExecutor:创建一个单线程执行程序,它可安排在给定延迟后运行命令或者定期执行

特征:

(1)线程池中多执行一个线程,之后提交的线程活动将会排在队列中依次执行

(2)可定时或者延迟执行线程活动

5.newScheduledThreadPool:创建一个线程池,它可安排在给定延迟后运行命令或者定期的执行

特征:

(1)线程池中具有执行数量的线程,即便是空线程也将保留

(2)可定时或者延迟执行线程活动

推荐内容