本章是 Java 多线程开发入门,重点介绍 Java 的线程状态及其互相转换。
一、根底知识点
多线程开发中,会波及到很多基础知识,这里后行梳理其中两个重要的知识点。
1.1 并发与并行
在多线程开发中,会常常提到并发与并行两个概念,咱们须要先明确这两个概念的含意到底是什么。
并发,concurrency
,是一段时间内解决多件事件的需要,它是问题域 problem domain
的概念。
并行,parallelism
,是在同一时刻同时解决多件事件的形式,它是办法域 solution domain
的概念。
并发以黑盒的角度,将指标零碎看做一个实体,要求该实体在一段时间内可能解决多件事件;并行以白盒的角度,将指标零碎合成为多个实体,这些实体能够同时别离解决多件事件,有多少个实体,就有多少并行,比方一个 8 核的 CPU,能够并行地运行 8 个工作。
并发是问题,是需要;并行是解决并发问题的办法之一。并发只提出要求,理论实现时,能够是单个实体串行解决工作(一个工作解决完再解决下一个),能够是多个实体并行处理工作(每个实体解决一个工作),能够是单个实体一直在多个工作之间来回切换着解决(如单核 CPU),甚至是多个实体一直在多个工作之间来回切换着工作做并行处理(如多核 CPU)。如下图所示: