代码编织梦想

01 进程(Process)/线程(Thread)

进程
进程是操作系统分配资源的最小单元
点击exe 就会进入内存中 进入内存中的程序叫进程
从任务管理器结束进程时 就会内存中清除了
内存中运行的应用程序 每个进程都有独立的内存空间
一个应用程序可以同时运行多个进程
进程也是程序的一次执行过程 是系统运行的基本单位
系统运行一个程序就是从创建程序 运行 消亡的过程
一个程序运行后至少有一个进程
线程
线程是操作系统进行运算调度的最小单位
一个进程至少包含一个线程 是进程的实际运作单位
一个进程包括多个线程 那么这条进程就是多线程的
多线程并发执行可以提高程序的效率 可以同时完成多项工作
main()方法启动的教程叫主线程
多次启动一个线程会报错 尤其是已经线束了再次启动

区别
进程是分配资源的最小单位,线程是CPU调度的最小单位
进程是抢占处理机的调度单位 线程属于某个进程 共享受资源
线程只由堆栈寄存器 程序计数器和TCB组成
线程不能看做独立应用 而进程可看做独立应用
进程有独立的地址空间 相互不影响 线程只是进程的不同执行路径
线程没有独立的地址空间 多进程的程序比多线程程序健壮
进程的切换比线程的切换开销大

java进程和线程的关系
java对操作系统提供的功能进行封装 ,包括进程和线程
运行一个程序会产生一个进程,进程至少包含一个线程
每个进程对应一个jvm实例,多个进程共享jvm里的堆
java采用单线程编程模型,程序会自动创建主程序
主线程可以创建子线程,原则上要厚与子线程完成执行
线程是进程的子集,一个进程可以有很多线程,每条线程并行执行不同的任务
不同进程使用不同内存空间和代码,同一进程的不同线程共享相同内存空间和代码

02 并行 并发

        并行      多个任务同一时间点同时进行(需要多核CUP)
                    速度快,效率高                
       并发      多个任务都请求运行,CUP只能接收一个任务,所以轮流进行
                    因为时间间隔较短,以为是同时进行         

04 同步和异步有何异同

       同步是指一个做完了,再做另外一个
      异步是指可以同时进行

 1   如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。

2.   当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率

05 线程调度器(Thread Scheduler)/时间分片(TimeSlicing)

 线程调度器是一个操作系统服务,它负责 Runnable状态的线程分配CPU时间。一旦个线程启动,它的执行便依赖于线程调度器的实现

时间分片指将可用的CPU时间分配给可用 Runnable线程的过程。分配CPU时间可以基于线程优先级或者线程等待时间

线程调度方式
1 分时调度
所有线程轮流使用CUP的使用权 平均分配每个线程占用cup的时间
2 抢占式调度 java使用的是抢占式调度
优先(但不总是这样)让优先级别高的线程使用cup 如果线程的优先级相同 随机选择一个

06 jvm启动是多线程的吗

     是多线程的,jvm启动至少启动了,垃圾回收线程和主线程(main方法) 

07 并发线程特性(三要素)

当没有满足这三大特性,就可能发生线程安全问题

(1) 原子性
这段代码被一个线程要么执行要么不执行,不可能执行到一半被其他的线程中断
解决办法: 加锁
(2) 可见性
多个线程同时访问同一变量时,一个线程修改变量的值,其它线程能立即看得到它修改的值
volatile解决线程间的可见性,强制线程每次读取该值的时候都去主内存中读取
(3) 有序性
程序执行的顺序按照代码的先后顺序执行(处理器可能会对指令进行重排序)
程序是按代码顺序执行,对于单线程来说确实是如此,但多线程情况下就不是如此。为了优化程序执行和提高CPU的处理性能,JVM和操作系统都会对指令进行重排,也就说前面的代码并不一定都会在后面的代码前面执行,即后面的代码可能会插到前面的代码之前执行,只要不影响当前线程的执行结果。所以,指令重排只会保证当前线程执行结果一致,但指令重排后势必会影响多线程的执行结果。虽然重排序优化了性能,但也是会遵守一些规则的,并不能随便乱排序,只是重排序会影响多线程执行的结果


08 QPS(Queries-per-second)

每秒查询率,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准
QPS = 并发量 / 平均响应时间

TPS
吞吐量


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_37335180/article/details/129624658

进程和线程关系及区别-爱代码爱编程

1.定义 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥

进程和线程的主要区别(总结)_kingdoooom的博客-爱代码爱编程_进程和线程的区别

根本区别:进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位 在开销方面:每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小。 所处环境:在操作系统中能同时运行多个进程(程序);而在同一个

总结:进程和线程的区别_life_binary的博客-爱代码爱编程

首先呢,进程是系统进行资源分配和调度的一个独立单位,线程呢就是进程内部的一条执行序列是CPU调度和分派的基本单位,线程的执行呢必须依赖于进程,一个进程内部至少有一条线程,main主函数的执行序列为主线程 ,我们可以通过线

java中的进程和线程区别-爱代码爱编程

【概念】 进程:是并发执行的程序在执行过程中分配和管理资源的基本单位,竞争计算机系统资源的基本单位。 线程:是进程的一个执行单元,是进程内科调度实体。比进程更小的独立运行的基本单位。线程也被称为轻量级进程。 一个程序由一个

操作系统——进程和线程的区别-爱代码爱编程

操作系统——进程和线程的区别 最近学习了操作系统中的进程和线程这两个知识点,昨天老师给我们出了一道题:进程和线程的区别。听完题目后一脸懵逼,只想到了进程的一部分概念,回来之后就查书,找到了答案。 1.进程和线程的主要区别在于它们是操作系统不同的资源管理方式; 2.进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个

子进程与线程的区别-爱代码爱编程

1、相同点: (a)二者都具有ID,一组寄存器,状态,优先级以及所要遵循的调度策略。 (b) 每个进程都有一个进程控制块,线程也拥有一个线程控制块。 (c) 线程和子进程共享父进程中的资源;线程和子进程独立于它们的父进程,竞争使用处理器资源;线程和子进程的创建者可以在线程和子进程上实行某些控制,比如,创建者可以取消、挂起、继续和修改线程和子进程的优先级;线程和子进程可以改变其属性并创建新的

c++——进程与线程的区别-爱代码爱编程

线程与进程的比较如下: 1)进程是资源(包括内存、打开的文件等)分配的单位,线程是 CPU 调度的单位; 2)进程拥有一个完整的资源平台,而线程只独享必不可少的资源,如寄存器和栈; 3)线程同样具有就绪、阻塞、执行三种基本状态,同样具有状态之间的转换关系; 4)线程能减少并发执行的时间和空间开销; 对于,线程相比进程能减少开销,体现在: 1)线

java线程和进程的区别_Java中的线程和进程比较-爱代码爱编程

1.进程和线程的区别 通俗一点说,进程就是程序的一次执行,而线程可以理解为进程中的执行的一段程序片段。 用一点文词说就是,每个进程都有独立的代码和数据空间(进程上下文);而线程可以看成是轻量级的进程。一般来讲(不使用特殊技术),同一进程所产生的线程共享同一块内存空间。 同一进程中的两段代码是不可能同时执行的,除非引入线程。 线程是属于进程的,当

java的进程和线程_java进程和线程区别与不同-爱代码爱编程

java进程和线程区别与不同。 一、定义 1.进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位。 2.线程是进程的一个实体,是CPU调度和分派的基本单位,他是比进程更小的能独立运行的基本单位,线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),一个线程

linux中的进程与线程,linux中进程和线程的区别是什么-爱代码爱编程

linux中进程和线程的区别是:1、一个程序至少有一个进程,一个进程至少有一个线程;2、线程的划分尺度小于进程;3、进程在执行过程中拥有独立的内存单元,而多个线程共享内存。 进程与线程的定义 (推荐学习:linux教程) 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位; 线程是进程的

面试常问——进程和线程的区别-爱代码爱编程

最近学习到了Java的多线程部分,了解到了进程和线程的相关概念,下面我们来介绍一下进程和线程吧。 目录 一、进程 二、线程 三、进程VS线程 一、进程 进程是操作系统资源分配的最小单元。一个进程拥有的资源有⾃⼰的堆、栈、虚存空间(页表)、文件描述符等信息。 从编程的角度来理解进程,可以把它看作是⼀个类或一个 PCB (Process Con

进程和线程的区别和联系-爱代码爱编程

目录 线程概念存在意义进程和线程的区别和联系 线程 概念 进程就是一个"执行流",按照某种顺序执行自己的代码。 存在意义 如今各种操作系统均能实现多进程同时执行,也就是支持并发编程。一个进程的创建需要消耗计算机资源,销毁意味着要释放资源。当很多个进程同时执行时,计算机资源的消耗太大,执行效率较低。 如何才能提高并发编程的效率?有两种方式

进程和线程的区别与联系_仙女教母️的博客-爱代码爱编程

一.进程和线程基本概念 1.进程:进程是操作系统中资源分配的基本单位。进程是操作系统对正在运行程序的一种抽象,可以将进程看作程序的一次运行。 2.线程:线程是操作系统中调度执行的基本单位。一个线程是一个“执行流”,每个线程之间都可以按照顺序执行自己的代码,多个线程“同时”执行多份代码。 二.进程和线程之间的区别与联系 1.一个进程可以包含多个线程,

进程和线程有什么区别?_zhaohuodian的博客-爱代码爱编程

从用户的角度来看,进程是正在运行的程序实例,而线程是进程中真正执行任务的基本单位。也就是说一个运行的程序至少包含一个进程,一个进程至少包含一个线程,线程不能独立于进程而存在。 进程 进程(Process)是操作系统分配资源的基本单位,一个进程拥有的资源有自己的堆、栈、虚存空间(页表)、文件描述符等信息。 从编程的角度来理解进程,可以把它看作是一个类或一

linux小黑板(12):linux系统下的线程-爱代码爱编程

"泥土里的蚂蚁哪儿能搞懂,天边的海鸥?" 我们翻开任意一本讲操作系统的书籍,对于进程的描述,一个最经典的定义是:一个"执行中的实例"。那么什么是线程呢?一本书给的定义是:"线程是进程中的一个实体,是被系统独立调用和运行的基本单位。",另一本书给的定义是:"运行在进程上下文中的逻辑流。"从书本上给的定义来看

项目实战16——消息队列的意义_消息队列 目录结构-爱代码爱编程

一.什么是消息队列 消息队列,英文简称是MQ,“消息队列”是在消息的传输过程中保存消息的容器。 二.原理 1.ArrayBockingQueue: ArrayBlockingQueue是一个阻塞式的队列,继承自Abstrac