Java面试之程序、进程、线程、管程和并发、并行的概念

简介: Java面试之程序、进程、线程、管程和并发、并行的概念

1. 进程与线程

1.1 程序

程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念。简单的说就是我们写的代码。

1.2 进程

(1)程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至 CPU,数据加载至内存。在

指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理 IO 的,当一个程序被运行,

从磁盘加载这个程序的代码至内存,这时就开启了一个进程。

(2)进程是指一个内存中运行的应用程序,每个进程都有一个独立的内存空间,一个应用程序可以同时运行多个进程。进程也是程序的一次执行过程,它是一个动态的概念,是系统运行程序的基本单位;系统运行一个程序即是一个进程从创建、运行到消亡的过程。

(3)进程是计算机中的程序关于某数据集合上的一次运行活动,是操作系统进行资源分配与调度的基本单位。可以把进程简单的理解为正在操作系统中运行的一个程序(比如我们使用的QQ,就启动了一个进程,操作系统就会为该进程分配内存空间。当我们使用迅雷,又启动了一个进程,操作系统将为迅雷分配新的内存空间。)

(4)进程可以视为程序的一个实例。大部分程序可以同时运行多个实例进程(例如记事本、画图、浏览器等),也有的程序只能启动一个实例进程(例如网易云音乐、360安全卫士等)

1.3 线程

(1)线程是由进程创建的,是进程的一个实体,一个进程之内可以分为一到多个线程(例如:使用浏览器同时下载多个文件,就是一个进程有多个线程)

(2)一个线程就是一个指令流,将指令流中的一条条指令以一定的顺序交给 CPU 执行

(3)Java 中,线程作为最小调度单位,进程作为资源分配的最小单位。 在 windows 中进程是不活动的,只是作为线程的容器

①单线程

同一个时刻,只允许执行一个线程

②多线程

同一个时刻,可以执行多个线程,比如:一个qq进程,可以同时打开多个聊天窗口

(4)Java主线程与子线程

①JVM启动时会创建一个主线程,该主线程负责执行main方法 . 主线程就是运行main方法的线程。

②Java中的线程是不孤立的,线程之间存在一些联系. 如果在A线程中创建了B线程, 称B线程为A线程的子线程, 相应的A线程就是B线程的父线程。

1.4 管程

管程俗称Monitor(监视器),也就是我们平时所说的锁。执行线程要求先成功持有管程,然后才能执行方法,最后方法完成时释放管程(无论是正常完成还是非正常完成)。在方法执行期间,执行线程持有了管程,其他线程都无法再获取到同一个管程

2.并行与并发

2.1 并发

(1)操作系统中有一个组件叫做任务调度器,将 cpu 的时间片(windows下时间片最小约为 15 毫秒)分给不同的线程使用,只是由于 cpu 在线程间(时间片很短)的切换非常快,人类感觉是 同时运行的 。单核 cpu 下,线程实际还是 串行执行 的。总结为一句话就是: 微观串行,宏观并行 。一般会将这种 线程轮流使用 CPU 的做法称为并发(concurrent)

(2)并发(concurrent)是同一时间应对(dealing with)多件事情的能力

2.2 并行

(1)多核 cpu下,每个 核(core) 都可以调度运行线程,这时候线程可以是并行的。

(2)并行(parallel)是同一时间动手做(doing)多件事情的能力

(3)同一个时刻,多个任务同时执行。多核cpu可以实现并行。

目录
相关文章
|
算法 Java
50道java集合面试题
50道 java 集合面试题
|
12月前
|
Java 大数据 Go
从混沌到秩序:Java共享内存模型如何通过显式约束驯服并发?
并发编程旨在混乱中建立秩序。本文对比Java共享内存模型与Golang消息传递模型,剖析显式同步与隐式因果的哲学差异,揭示happens-before等机制如何保障内存可见性与数据一致性,展现两大范式的深层分野。(238字)
507 4
|
12月前
|
缓存 安全 Java
如何理解Java中的并发?
Java并发指多任务交替执行,提升资源利用率与响应速度。通过线程实现,涉及线程安全、可见性、原子性等问题,需用synchronized、volatile、线程池及并发工具类解决,是高并发系统开发的关键基础。(238字)
523 5
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
633 1
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
562 1
|
Java 数据库连接 数据库
Java 相关知识点总结含基础语法进阶技巧及面试重点知识
本文全面总结了Java核心知识点,涵盖基础语法、面向对象、集合框架、并发编程、网络编程及主流框架如Spring生态、MyBatis等,结合JVM原理与性能优化技巧,并通过一个学生信息管理系统的实战案例,帮助你快速掌握Java开发技能,适合Java学习与面试准备。
636 2
Java 相关知识点总结含基础语法进阶技巧及面试重点知识
|
SQL 缓存 安全
深度理解 Java 内存模型:从并发基石到实践应用
本文深入解析 Java 内存模型(JMM),涵盖其在并发编程中的核心作用与实践应用。内容包括 JMM 解决的可见性、原子性和有序性问题,线程与内存的交互机制,volatile、synchronized 和 happens-before 等关键机制的使用,以及在单例模式、线程通信等场景中的实战案例。同时,还介绍了常见并发 Bug 的排查与解决方案,帮助开发者写出高效、线程安全的 Java 程序。
722 0
|
算法 Java
50道java基础面试题
50道java基础面试题
|
缓存 监控 算法
Java程序性能优化策略与实践
在当今软件开发领域,Java作为一种广泛应用的编程语言,其程序性能优化显得尤为重要。本文将介绍一些Java程序性能优化的策略和实践,帮助开发者提高代码执行效率、减少资源消耗,并优化用户体验。通过深入探讨各种优化技术和工具,读者将能够更好地理解和运用这些策略,有效提升Java应用程序的性能。
282 1