话还得从头说起——
进程简介:
在未配置OS的系统中,程序的执行方式是顺序执行,即必须在一个程序执行完成后,才允许另一个程序的执行,这种执行方式的特点在于:程序必须按照顺序来执行!进入多道程序环境下,则允许多个程序并发的执行,但并发执行的特点在于:间断性,同时还会失去封闭性,而最大的弊端则在于 程序的执行结果,不可再现。为了,保证程序的并发执行,引入了进程的概念!进程之间,通过同步,互斥等一系列手段,来达到 程序的并发执行。
进程——由程序段,相关数据 和 PCB——ProcessControl Block 进程控制块 组成一起 构成进程的进程实体。
线程简介:
随着OS的发展,人们又提出了比进程更小的能独立运行的基本单位——线程 Thread ,用它来提高系统内程序并发执行的程度,从而进一步提高系统的吞吐量。随着多处理机系统得到迅速发展,线程能比进程更好的提高程序的并行执行程度,充分发挥多处理机的优越性。在这个过程中,线程只是作为一个调度和分派的基本单位,而进程作为资源拥有的基本单位,这样,线程基本上不拥有资源,作为一个调度和分派单位,他便可以轻装上阵。
综上所述:
之所以引入进程——为了解决程序的并发执行问题;
之所以引入线程——为了提高程序的并发执行程度。
Java中的多线程:
接下来,看看Java中的多线程,上文 提到的概念同样 适用!
在Java中引入多线程的目的便显而易见——当程序中有多部分的代码需要同时执行,这时便需要引入线程,将需要同时执行的代码作为线程任务(并发任务),来达到目的。
同时在这里,还有必要搞清一个问题—— 什么是 同时执行?从字面意思来理解,就是同时执行!而事实上,是CPU瞬间在各个线程之间做着快速切换,这种切换在引入时间片技术的OS系统中,是按照时间片的方式来完成的。
JVM的多线程:
a) 在执行main 函数中内容的同时,垃圾回收器的线程,同时执行!