进程和线程的区别与联系
进程:是程序一次执行的实例,是系统分配资源的独立单位;
线程:是进程执行的流程,是CPU进行调度和分派的基本单位;
引入进程是为了解决程序不能并发执行的问题,也提高CPU利用率,但是进程之间的切换已经非常消耗资源了,所以引入线程是为了解决进程在切换时对系统资源的大量消耗的问题;
线程是轻型进程,线程属于进程,并且在同一个进程中,多个线程拥有相同的地址空间和共享其中的资源;
跟简单的理解:
进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程。比如在Windows系统中,一个运行的exe就是一个进程。
线程是指进程中的一个执行流程,一个进程中可以运行多个线程。比如java.exe进程中可以运行很多线程。线程总是属于某个进程,进程中的多个线程共享进程的内存。
并行和并发:
并发:同一个实体上的多个事件,不一定同时。比如,同一个CPU轮流执行多个线程。
并行:不同实体上的多个事件,同时。比如,多个CPU同时执行多个进程。
所以,并行针对进程,并发针对线程。
并发性:同一时间间隔内,发生两个或多个事件。
并行性:同一时刻,发生两个或多个事件。
同步运行和异步运行:
同步:在访问临界资源时,比如打印机,一个线程必须等待上个线程执行完毕,才能执行。(线程阻塞)
异步:在执行时间较长的线程时,去执行另一个线程。