|
|
51CTO旗下网站
|
|
移动端

1.1.1 进程与线程

《Java多线程与Socket:实战微服务框架》第1章多线程基础,本书尽量采用简要和通俗易懂的方式来介绍多线程知识。本节为大家介绍进程与线程。

作者:庞永华来源:电子工业出版社|2019-03-26 15:40

第1章 多线程基础

Java多线程技术包含的内容非常多,也非常复杂,完全可以单独写一本书。限于篇幅,本书尽量采用简要和通俗易懂的方式来介绍多线程知识。

1.1 多线程的概念

1.1.1 进程与线程

现在的操作系统都是多任务操作系统。多任务操作系统允许多个进程在同一个CPU上运行。进程也是操作系统进行资源分配的最小单位,每个进程都有独立的代码和数据空间,称为进程上下文。CPU从一个进程切换到另一个进程所做的动作被称为上下文切换。操作系统通过频繁的上下文切换来让这些进程看起来像在同时运行一样。

进程的运行需要较多的资源,因此,操作系统能够同时运行的进程数量是有限的。进程间的切换和通信也存在较大的开销。为了能并行执行更多的任务,提升系统的效率,才引入了线程的概念。线程间的切换开销比进程间的切换开销小得多。

线程是CPU调度的最小单位,它是进程的一部分,只能由进程创建。一个进程拥有1~N个线程,这些线程共享进程的资源和程序代码。也就是说,一个Java进程(JVM进程)至少有一个线程(称为主线程),对应到代码中就是main方法所在的线程。通过主线程可以创建更多线程。此外,线程又分为用户线程和守护线程。两者的区别在于,后者会随主线程结束而结束。

一旦所有的用户线程都结束,程序就会终止,所有守护线程也随之终止。

受操作系统的限制,每个操作系统用户能同时运行的进程数是有限的,每个进程能够开启的线程数也有上限。在同一个CPU核心上,多个线程以抢占或主动让出时间片的形式轮流执行。基于同一段代码可以创建多个线程,这些线程共享进程的数据空间,但每个线程有独立的运行栈和程序计数器。


喜欢的朋友可以加入官方的读书群

51CTO读书频道二维码


51CTO读书会第9群:808517103

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

订阅专栏+更多

Jenkins Pipeline可持续化集成

Jenkins Pipeline可持续化集成

优化运维流水线
共3章 | youerning

198人订阅学习

笑熬浆糊之职场那些事

笑熬浆糊之职场那些事

IT人的职场心法
共22章 | Bear_Boss

79人订阅学习

Redis运维秘籍

Redis运维秘籍

运维标配技术
共15章 | one叶孤舟

199人订阅学习

读 书 +更多

3D游戏开发大全(高级篇)

在我的第一本书——《3D游戏开发大全》中,我们曾经对3D游戏开发完成了一次犹如探索原始丛林般的旅程:首先,我们对3D游戏产业进行了初步了...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊

51CTO服务号

51CTO播客