博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
高并发和多线程概念
阅读量:5272 次
发布时间:2019-06-14

本文共 1227 字,大约阅读时间需要 4 分钟。

高并发和多线程,多线程是完成任务的一种方法,高并发是系统运行的一种状态,通过多线程有助于系统承受高并发状态的实现。

高并发是一种系统运行过程中遇到的一种“短时间内遇到大量操作请求”的情况,主要发生在web系统集中大量访问或者socket端口集中性收到大量请求(例如:12306的抢票情况;天猫双十一活动);

高并发不是JAVA的专有的东西,是语言无关的广义的,为提供更好互联网服务而提出的概念。高并发想让服务器(tomcat)能接受处理多用户多请求。

多线程只是为了达到高并发目的(首先得有多线程接收处理多任务,才有高并发发生);为实现某并发功能而采用的一种具体的实现方法,这种功能也可以由多进程实现,也可以由多进程,多线程一起实现。这是战术上的并行;

 

线程和进程,进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位;

进程——资源分配的最小单位,线程——程序执行的最小单位。

 

包含关系:

没有线程的进程可以看做是单线程的,如果一个进程内有多个线程,则执行过程不是一条线的,而是多条线(线程)共同完成的;

线程是进程的一部分,所以线程也被称为轻权进程或者轻量级进程;

线程必定也只能属于一个进程,而进程可以拥有多个线程而且至少拥有一个线程;

 

具体区别:

因为进程拥有独立的堆栈空间和数据段,所以每当启动一个新的进程必须分配给它独立的地址空间,建立众多的数据表来维护它的代码段、堆栈段和数据段,这对于多进程来说十分“奢侈”,系统开销比较大;

而线程不一样,线程拥有独立的堆栈空间,但是共享数据段,它们彼此之间使用相同的地址空间,共享大部分数据,比进程更节俭,开销比较小,切换速度也比进程快,效率高;

 

开销等区别和包含关系带来得影响:

但是正由于进程之间独立的特点,使得进程安全性比较高,也因为进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,

而线程只是一个进程中的不同执行路径。一个线程死掉就等于整个进程死掉;

 

 

进程与线程的选择取决以下几点:

 

1、需要频繁创建销毁的优先使用线程;因为对进程来说创建和销毁一个进程代价是很大的。

 

2、线程的切换速度快,所以在需要大量计算,切换频繁时用线程,还有耗时的操作使用线程可提高应用程序的响应

 

3、因为对CPU系统的效率使用上线程更占优,所以可能要发展到多机分布的用进程多核分布用线程

 

4、高并发)并行操作时使用线程,如C/S的服务器端并发线程响应用户的请求;

 

5、需要更稳定安全时,适合选择进程;需要速度时,选择线程更好。

 

参考地址:https://www.cnblogs.com/renzhuang/articles/6733461.html

多线程百度百科:https://baike.baidu.com/item/多线程/1190404?fr=aladdin

 

转载于:https://www.cnblogs.com/wmqiang/p/10607494.html

你可能感兴趣的文章
【hdu 1429】胜利大逃亡(续)
查看>>
Factory Design Pattern
查看>>
P1192-台阶问题
查看>>
Java大数——a^b + b^a
查看>>
简单的数据库操作
查看>>
帧的最小长度 CSMA/CD
查看>>
树状数组及其他特别简单的扩展
查看>>
普通求素数和线性筛素数
查看>>
PHP截取中英文混合字符
查看>>
电子眼抓拍大解密
查看>>
51nod1076 (边双连通)
查看>>
Linux pipe函数
查看>>
java equals 小记
查看>>
2019春 软件工程实践 助教总结
查看>>
Zerver是一个C#开发的Nginx+PHP+Mysql+memcached+redis绿色集成开发环境
查看>>
程序的静态链接,动态链接和装载 (补充)
查看>>
关于本博客说明
查看>>
[Kaggle] Sentiment Analysis on Movie Reviews
查看>>
价值观
查看>>
mongodb命令----批量更改文档字段名
查看>>