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