并发编程-概念部分-1
什么是进程和什么是线程?
进程:操作系统进行资源分配的最小单位。其中资源包括:cpu、内存空间、磁盘io等。
同一进程中的多条线程共享该进程中的全部系统资源,而进程与进程之间相互独立。
线程:cpu调度的最小单位,必须依赖进程而存在。
进程和线程的区别:
定义:进程是程序运行的一个实体的运行过程,是系统进行资源分配和调度的独立单位。线程是进程运行和执行的最小调度单位。
活泼性:进程不活泼(只是线程的容器)。线程活泼,随时可以创建和销毁。
系统开销:进程创建、撤销、切换开销大,资源要重新分配和收回。线程相对于进程仅保存少了寄存器内容,开销小,在进程的地址空间执行代码。
拥有资产:进行是资源拥有的基本单位。线程相对于进程来说基本上不拥有资源,但会占用cpu。
调度:进程仅是资源分配的基本单位。线程是独立调度、分派的基本单位。
安全性:进程之间相对比较独立,彼此不会互相影响。线程共享同一个进程下的资源,可以相互通信和影响。
什么是并行运行?
并行运行可分为两种情况:
1、程序同时开启的运行中的线程数<=cpu数量*cpu的核心数量。
2、程序同时开启的运行中的线程数<=cpu数量*cpu的线程数量。
举一个例子:高速公路a是并排8车道。那么最大并行车辆就是8辆。当在a公路同时并排走的车辆小于等于8辆时,车辆就可以并行运行。cpu也是这个原理,一个cpu相当于一个a高速,核心数或线程数就相当于并排可以通行的车道。多个cpu就相当于并排有多条高速公路,而每个高速公路并排有多个车道。
什么是并发运行?
并发运行也可分为两种情况:
1、在单核处理器中同时处理多个任务(这里的同时是指逻辑上的同时)
2、在多核处理器中同时处理多个任务(这里的同时是指物理上的同时)
并发与并行的概念重要的区别就是“一段时间”和“同一时刻”。并发是指在同一段时间内同时做多个事情,比如在1点到两点洗碗,洗衣服等。而并行是指在同一时刻做多个事情。如果我一点左手画圆右手画方。
什么是吞吐量?
吞吐量是指对网络、设备、端口、虚电路或其他设施,单位时间内成功地传送数据的数量(以比特、字节、分组等测量)。
网络吞吐量:
某个时刻,在网络中的两个节点之间,提供给网络应用的剩余带宽,即没有丢帧的情况下,设备能够接受的最大速率。
吞吐量的大小主要由防火墙内网卡,及程序算法的效率决定。程序算法会是防火墙系统进行大量运算,导致通信量大打折扣。
系统吞吐量:
系统在单位时间内所处理的信息量,以每个时间段所处理的进程数来度量。
影响吞吐量的因素:
1、存储设备的存取速度,即从存储器读出数据或数据写入存储器所需的时间。
2、cpu性能:时钟频率、每天指令所花的时钟周期数(cpi)、指令条数。
3、系统结构,如并行处理结构可增大吞吐量。
高并发编程的意义及好处:
1、充分利用cpu的资源
如同坐地铁,有人只坐地铁,而有人实现坐地铁时候看书,这样相当于同样的时间实现了更多的事。
2、加快响应用户的时间
3、使代码模块化,异步化,简单化
高并发,多线程要注意的问题:
1、线程之间的安全性。
2、线程之间的死循环过程。
3、线程太多了会将服务器资源耗尽形成死机宕机。
上一篇: 2019 Java面试题
下一篇: Java内存管理 -JVM 垃圾回收