**
** 进程本质是执行中的程序。 线程是程序中流控制。本身是不能执行的,只能使用分配给程序的资源。 进程-线程 一个进程可以包含一个或者多个线程,但是至少要包含一个线程。 多进程-允许计算机运行两个或者更多的程序。 -多进程内部的数据和状态时完全独立的。 -进程通信成本高,难度大。 -进程与进程切换负担大。 -多进程需要大的管理成本。 多线程-一个程序实现多个代码同时交替运行,则需要产生多线程。 -多线程共享一块内存空间和一组系统资源,可能相互影响。 -线程通信成本低,难度小。 -线程与线程切换负担小。 -多线程比较容易管理。 **
** 就是“最大限度地利用CPU资源”,当某一线程的处理不需要占用CPU而只和IO等资源打交道时,让需要占用CPU的其他线程有机会获得CPU资源。从根本上说,这就是多线程编程的最终目的。 从宏观角度来看,多个线程在同时执行(宏观并行),但是微观上来看,处理器的个数决定了某一个时刻可以同时运行的最大线程数,如单核CPU某一时刻只能有一个线程在执行(微观串行),双核的CPU在某一个时刻,最多可以运行两个线程,可以做到微观并行。 多线程程序包含两条或两条以上并发运行的部分,程序中每个这样的部分都叫做一个线程(Thread)。每个线程都有独立的执行路径,因此多线程是多任务处理的一种特殊形式。
多任务处理被所有的现代操作系统所支持。然而,多任务处理有两种截然不同的类型:基于进程的和基于线程的。
1.基于进程的多任务处理是更熟悉的形式。进程(process)本质上是一个执行的程序。因此基于进程的多任务处理的特点是允许你的计算机同时运行两个或更多的程序。 举例来说,基于进程的多任务处理使你在运用文本编辑器的时候可以同时运行Java编译器。 在基于进程的多任务处理中,程序是调度程序所分派的最小代码单位。 2.而在基于线程(thread-based)的多任务处理环境中,线程是最小的执行单位。 这意味着一个程序可以同时执行两个或者多个任务的功能。 例如,一个文本编辑器可以在打印的同时格式化文本。