线程:CPU使用的基本单元(线程ID、程序计数器、寄存器集合、栈)。

多线程:一个进程有多个线程

多线程的优点:

增加响应度:当一个交互程序部分阻塞,该程序能继续执行

一个应用程序在同一地址空间有多个不同的活动线程

经济:进程的创建需要的内存和资源分配比较昂贵,而线程能共享它们所属进程的资源,比较经济,并且,进程创建比线程创建费时,进程切换比线程切换费时

多处理器体系结构的利用:充分使用多处理器体系结构,以便每个进程能并行运行在不同的处理器上。不管有多少个CPU,单线程进程只能运行在一个CPU上。

线程有两种:用户层的用户线程和内核层的内核线程。

用户线程和内核线程建立关系的方法

1.多对一模型:多个用户线程映射到一个内核线程

优点:线程管理是由线程库在用户空间进行的,效率比较高

缺点:当一个线程阻塞,整个进程会阻塞,并且任一时刻只有一个线程能访问内核,多线程不能并行运行在多处理器上

2.一对一模型:将每个用户线程映射到一个内核线程

优点:一个线程阻塞,另个线程继续执行,允许多个线程能并行地运行在多处理器系统上

缺点:每创建一个用户进程需要创建一个内核进程,影响应用程序的性能

3.多对多模型:多路复用了许多用户线程到同样数量或更小数量的内核线程上(内核线程数量和特定机器有关)。也允许一个用户线程绑定到莫个内核线程,这个变种有时被称为二级模型

优点:没有前两者的缺点

多线程编程,每个请求若都要创建新进程处理,则会产生两个问题

1.创建进程的时间,进程用完了就被扔了

2.如果进程数量很多,会耗尽系统资源,如CPU时间和内存

为了解决这些问题,产生了线程池。

线程池,在进程开始时创建一定数量的线程,并放入到池中以等待工作,服务器当收到请求,唤醒线程工作,完成服务,线程又回到线程池中等待,若池中没有可用的线程,服务器就好一直等待有空线程为止。

笔记 线程(threads)的更多相关文章

  1. SYSBIOS学习笔记---线程(Threads)

    在SYS/BIOS中,广义上指被处理器执行的任何独立的指令流.线程是一个能够调用一个函数或者中断服务程序的单点控制.在sysbios系统中一共有硬件中断(HWI).软件中断(SWI).任务(Task) ...

  2. TensorFlow笔记-线程和队列

    线程和队列 在使用TensorFlow进行异步计算时,队列是一种强大的机制. 为了感受一下队列,让我们来看一个简单的例子.我们先创建一个“先入先出”的队列(FIFOQueue),并将其内部所有元素初始 ...

  3. JavaSE中线程与并行API框架学习笔记——线程为什么会不安全?

    前言:休整一个多月之后,终于开始投简历了.这段时间休息了一阵子,又病了几天,真正用来复习准备的时间其实并不多.说实话,心里不是非常有底气. 这可能是学生时代遗留的思维惯性--总想着做好万全准备才去做事 ...

  4. python学习笔记——线程threading (二)重写run()方法和守护进程daemon()

    1 run()方法 1.1 单个线程 在threading.Thread()类中有run()方法. from time import ctime,sleep import threading # 定义 ...

  5. Python3基础笔记---线程与进程

    参考博客:Py西游攻关之多线程(threading模块) 一.并发与并行的区别 并发:交替做不同事的能力并行:同时做不同事的能力 行话解释:并发:不同代码块交替执行的性能并行:不同代码块同时执行的性能 ...

  6. ARM官方《CMSIS-RTOS教程》之线程Threads

    创建线程Creating Threads 一旦RTOS开始运行,就会有很多系统调用来管理和控制活跃的线程.默认情况下,main()函数自动被创建为第一个可运行的线程.在第一个例子里我们使用main() ...

  7. Java学习笔记 线程池使用及详解

    有点笨,参考了好几篇大佬们写的文章才整理出来的笔记.... 字面意思上解释,线程池就是装有线程的池,我们可以把要执行的多线程交给线程池来处理,和连接池的概念一样,通过维护一定数量的线程池来达到多个线程 ...

  8. 【多线程】Android多线程学习笔记——线程池

    Java线程池采用了享元设计模式,在系统中维持一定数量的线程,用于处理异步或并发需求,在平时处理异步或并发任务时被广泛使用.这里基于JDK1.8和Android28来整理一些关于线程池的知识点. 一. ...

  9. struts2学习笔记--线程安全问题小结

    在说struts2的线程安全之前,先说一下,什么是线程安全?这是一个网友讲的, 如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码.如果每次运行结果和单线程运行的结果是一样 ...

随机推荐

  1. 第二篇.Bootstrap起步

    第二篇Bootstrap起步 我们可以在http://getbootstrap.com下载bootstrap的文件 点击左边的download bootstrap可以下载bootstrap的css,j ...

  2. linux下查看tomcat和jdk版本号

    linux下查看tomcat和jdk版本号的命令: 这个需要进入到bin目录下面 ,执行"./version.sh"命令 [root@hncsweb bin]# ./version ...

  3. SQL Server中查询某个数据库中表的个数

    --SQL Server中 数表: SELECT * FROM SYSOBJECTS WHERE xtype = 'U'; SELECT COUNT(*) FROM SYSOBJECTS WHERE ...

  4. 火狐和IE浏览器的兼容问题汇总

    1.window.event code=(navigator.appName="Netscape")?event.which:event.keycode; 2.event.x mx ...

  5. 设置table距离顶部位置

    //UIEdgeInsetsMake———— UIEdgeInsets insets = {top, left, bottom, right} self.tableView.contentInset ...

  6. dos2unix

    dos2unix 实际上就是把文本文件里面的^M删除,我一般懒得用这个命令,vi里面用一个命令(:%s/^m//g)删除即可. 用法举例: dos2unix a.txt b.txt 要把一批文件都do ...

  7. box-shadow

    box-shadow:a b c d e; a-水平位置,相对于盒子本身在水平方向的正偏移距离: b-垂直位置: c-模糊距离: d-阴影尺寸,从盒子的边框开始算起的阴影的宽度: e-阴影颜色: f- ...

  8. PCB设计规则考量之初识

    PCB的设计规则可以分布局与走线.布局里最简单的原则就是避免信号之间的干扰,有把模拟部分与数字部分分开,把开关电源与数字部分分开,把端去耦电容靠近端点,而且从端点出来的电容容值按从小到大摆放效果会好些 ...

  9. .net core 学习笔记(2)-中间件

    小项目中有个操作日志的功能,主要是记录用户对修改数据的操作进行记录,记录的内容包括 访问的控制器和方法,以及控制器方法中接收的参数,操作用户,及操作IP等信息,最开始是用ActionFilterAtt ...

  10. web 调用WCF 每次都要重新编译才能正常使用 终于解决了

    项目中不知从何时起出现了个奇怪的问题,每次运行web都要全部重新编译解决方案,否则单独编译web,总是会出现WCF 调用失败的情况(什么无法激活服务,什么协议对地址不可用啊,七七八八的问题),因为这个 ...