zoukankan      html  css  js  c++  java
  • 高并发和多线程概念

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

    高并发是一种系统运行过程中遇到的一种“短时间内遇到大量操作请求”的情况,主要发生在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

  • 相关阅读:
    wget(转)
    852. Peak Index in a Mountain Array
    617. Merge Two Binary Trees
    814. Binary Tree Pruning
    657. Judge Route Circle
    861. Score After Flipping Matrix
    832. Flipping an Image
    461. Hamming Distance
    654. Maximum Binary Tree
    804. Unique Morse Code Words
  • 原文地址:https://www.cnblogs.com/wmqiang/p/10607494.html
Copyright © 2011-2022 走看看