本文概述
Java多线程基础知识,包括进程,线程以及他们的关系
进程与线程
- 进程:一个任务称为一个进程。
- 进程内同时执行多个子任务,子任务称为线程。
- 进程和线程的关系:一个进程可以包含一个或多个线程,但至少会有一个线程。
具体如图所示:
多进程模式
即每个进程只有一个线程
如图所示:
多线程模式
即一个进程有多个线程
如图所示:
多线程+多进程模式(复杂度最高)
多进程和多线程混合模式
如图所示
进程VS线程
- 进程和线程是包含关系,但是多任务既可以由多进程实现,也可以由单进程内的多线程实现,还可以混合多线程+多进程。
- 和多线程相相比,多进程的缺点:创建进程比创建线程开销大,尤其是在windows上;进程间通信比线程的通信要慢,因为线程见通信就是读写同一个变量,速度快。
- 多进程的优点:多进程稳定性比多线程高,因为在多进程的情况下,一个进程崩溃不会影响到其他进程,而在多线程的情况下,任何一个线程崩溃会直接导致整个进程崩溃。
多线程
- Java语言内置了多线程支持:一个Java程序实际上是一个JVM进程,JVM进程用一个主线程来执行main()方法,在main()方法内部,我们又可以启动多个线程。此外,JVM还有负责垃圾回收的其他工作线程等。使用多线程实现多任务。
- 和单线程相比,多线程编程的特点在于:多想成经常需要读写共享数据,并且需要同步。多线程编程复杂度更高,调试更困难。
- 多线程的特点:多线程模型是Java程序最基本的并发模型;后续读写网络,数据库,Web开发等都依赖Java多线程模型。