JAVA并发编程之一:进程和线程

1 并发历史

    早期的计算机中并没有操作系统,它们只从头到尾执行一个程序,并且这个程序能访问所有的计算机资源。对于这种环境,每次只能运行一个程序,对于昂贵且稀有的计算机资源来说是一种极大的浪费。

    操作系统的出现使得计算机每次能运行多个程序,并且不同的程序都在单独的进程中运行。操作系统为每个独立执行的进程分配各种资源,包括:内存,文件句柄以及安全证书等。如果需要通信的话,在不同进程之间可通过通信机制来交换数据,包括:套接字、信号处理器、共享内存、信号量及文件等。

    操作系统出现主要取决于以下几个原因:

    1. 资源利用率  相较于仅有一个程序,操作系统实现多个程序同时执行,将保证在A程序必须等待某个外部操作执行完成时,运行B程序,那么无疑将提高资源利用率

    2. 公平性    不同的用户和程序对于计算机资源有着同等的使用权

    3. 便利性    通常来说,在计算多个任务时,应该编写多个程序,每个程序执行一个任务并在必要时相互通信,这比只编写一个程序来计算所有任务更容易实现

    这些原因同样也促使了线程的出现。线程允许在同一个进程中同时存在多个程序控制流。线程会共享进程范围内的资源,例如内存、文件句柄,但每个线程都有各自的程序计数器、栈以及局部变量等。线程还提供了一种直观的分解模式来充分利用多处理器系统中的硬件并行性,而在同一个程序中的多个线程也可以被同时调度到多个CPU上运行。

你可能感兴趣的:(JAVA并发编程之一:进程和线程)