java中关于进程和线程的知识还是很容易混淆的,两者的相似之处有很多,都包含了非常细致的知识点。关于进程的含义你都了解吗?一起来看看吧。
一、首先说一下,进程和线程的概念
进程:运行中的应用程序称为进程,拥有系统资源(cpu、内存)
线程:进程中的一段代码,一个进程中可以有多段代码。本身不拥有资源(共享所在进程的资源);
在java中,程序入口被自动创建为主线程,在主线程中可以创建多个子线程。
多进程: 在操作系统中能同时运行多个任务(程序)
多线程: 在同一应用程序中有多个功能流同时执行
为什么已经有了进程,还会需要线程呢?
主要原因如下:
许多应用程序中,同时发生着多个活动。将这些应用程序分解成多个准并行的线程,程序设计的模型会变成更加简单。
由于线程比进程进行更加轻量,创建和取消更加容易。
如果程序是IO密集型,那么多线程执行能够加快程序的执行速度。(如果是CPU密集型,则没有这个优势)在多CPU系统中,多线程是可以真正并行执行的。
二、然后说一下,线程的主要用途
⑴利用它可以完成重复性的工作(如实现动画、声音等的播放)。
⑵从事一次性较费时的初始化工作(如网络连接、声音数据文件的加载)。
⑶并发执行的运行效果(一个进程多个线程)以实现更复杂的功能
三、介绍一下线程的主要特点
⑴不能以一个文件名的方式独立存在在磁盘中;
⑵不能单独执行,只有在进程启动后才可启动;
⑶线程可以共享进程相同的内存(代码与数据)。
四、多线程原理
同一时间,CPU只能处理1条线程,只有1条线程在工作(执行)多线程并发(同时)执行,其实是CPU快速地在多条线程之间调度(切换),如果CPU调度线程的时间足够快,就造成了多线程并发执行的假象
那么,如果线程非常非常多,会发生什么情况?
CPU会在N多线程之间调度,CPU会累死,消耗大量的CPU资源,并且每条线程被调度执行的频次会降低(线程的执行效率降低)。