多线程(1)——认识了解多线程
多线程(1)——认识了解多线程
多线程、并发编程的本质:
多线程本质上就是并发编程,并发编程的本质是最大化使用硬件的性能。理解性能,就要解决什么是进程的问题。
Java与多线程:
Java是为数不多的支持多线程并发编程的开发语言,所以Java在整体的效率上是最高的。
进程:
① 一个具有一定独立功能的程序关于某个数据集合的一次运行活动;
② 是系统进行资源分配和调度的基本单位
③ 是操作系统结构的基础。
多进程:
指的是在没有扩展原始系统硬件资源的情况下,利用一些算法,可以实现多个进程的并行执行,在同一个时间段上,有多个进程并发执行,但是在同一个时间点上只会有一个进程执行。
线程和进程的关系:
线程是在进程基础上的进一步划分,可以达到更快的性能,任何一个进程的启动速度实际上都是非常缓慢的。所以线程本质上的设计性能上要远远高于进程,但是线程是不可能离开进程存活的。
进程与CPU:
每一个进程的执行都必须有一个独立支持他的CPU,所以所有的资源共享里面,只有CPU是无法进行共享的,每一个进程都只有一个自己的中央处理单元。 如果要想实现CPU 的共享,那么就必须利用线程来描述。
拓展:
硬件的 CPU中出现了多核的状态,理论上多核CPU的多进程执行成为并行编程,并非所有的CPU都可以超出若干个线程出来,一般来讲,每一块CPU只会有一个线程执行,但是有一些CPU可以使用超线程技术,设计出若干个多线程的执行状态。
在进程和线程的概念之上实际上还有一个所谓的“纤程”,在线程基础上的进一步划分,按时有一些地方也把纤程称作“协程”。,Java没有支持多协程编程(以后不一定)。现在常见的编程语言里面:Kotlin(Android第二代产品)和python都是支持多协程编程的。
记忆方法:
单CPU叫并发,多CPU叫并行。