Java进程和线程!!!(超级重要,用心整理)

一、先来介绍一下软件

二、进程

三、线程

四、进程VS线程

五、线程是不是越多越好?

六、应该创建多少个合适?新建线程的最优场景(应该创建多少个线程最好):


一、先来介绍一下软件

1.定义:

计算机内除了硬件之外,最大的软件就是操作系统了。

1.1OS操作系统:

操作系统是一组做计算机资源管理的软件的统称,目前常用的操作系统有:Windows系列,Unix系列(付费),Linux系列等等;

eg:linux系统:所有发布的程序(上手难度有点高,高性能)

Windows系统:家庭、工作中常用的操作系统(图形化界面,操作简单)

MacOS苹果系统:类似于windows,市场占比较少,UI效果更好,基本无病毒

题外话:如果您的电脑弹窗较多,建议您安装杀毒软件火绒

二、进程

1.进程:是操作系统分配资源的最小单位,一个进程拥有的资源有自己的堆、栈、虚拟空间(页表)、文件描述符等信息;简单来说,将一个可执行文件运行起来就是一个进程。Windows可执行文件就是一个exe程序。

2.怎么去看整个电脑上的进程:快捷键Ctrl+shift+esc

 进程ID并不是固定不变的,每次启动进程时,动态分配的。每次打开新的进程都不一样。

3.进程的本质+组成

进程本质上就是一个PCB结构体,类似于Java中的类,而这个Java中的类包含了:

(1)PID:进程的唯一身份标识;

(2)进程状态

  • 新建状态 New
  • 就绪状态 
  • 运行状态
  • 阻塞状态
  • 销毁状态

(3)优先级:决定进程执行的顺序,可以用户指定

(4)记账信息:保证进程执行的公平性,可以规避进程饿死

记账信息里面会记录分配cpu的次数和执行间隔,作为cpu是否执行他的依据,而是否执行他是进程调度器决定的,记账信息只是提供给调度器参考信息

(5)上下文信息:保存本次的执行状态,以便于下次执行,而这个过程就叫做一个上下文

(6)一组内存:记录此进程需要使用的资源

4.进程关联的重要概念:

1.时间片:每个进程得到的CPU的执行时间叫做时间片。

三、线程

线程是操作系统可以进行调度的最小单元,被包含在进程中,一个进程中可以包含多个线程。

(1)线程的优势:效率高,线程间可以共享资源

四、进程VS线程

(1)从属关系不同:进程是可执行的文件的实例,进程中包含了线程,,线程中不可以包含进程

(2)描述侧重点不同:进程是操作系统分配资源的基本单位,而线程是操作系统进行调度 的基本单位

(3)共享资源不同:线程之间可以共享资源(内存,打开的文件栈信息不可以共享),进程之间不可以共享资源

(4)上下文切换速度不同:线程上下文切换速度快,进程慢

(5)操作者:进程的操纵者是操作系统,线程的操纵者是编程人员

五、线程是不是越多越好?

答:不是,如果创建的线程过多,就会造成狼多肉少的情况,就会造成恶意争抢和线程过度调度的问题的。反而降低效率。

六、应该创建多少个合适?新建线程的最优场景(应该创建多少个线程最好)

答:无标准答案,看服务器硬件配置情况和任务类型来说,通常是比较合适的是CPU个数-1.

  • 计算密集类,不宜太多。
  • IO类型,不费CPU,读写需要时间,可以适当多创建几个线程
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值