2019独角兽企业重金招聘Python工程师标准>>>

一、线程的相关概念

1.同步和异步

用一次方法调用来说:

同步方法一旦调用开始,便必须等到方法调用返回后,才能继续后面的行为。

异步方法更像是一个消息传递,一旦开始,方法调用就会立即返回,调用者就可以继续后续的操作。异步方法通常会在另外一个线程中"真实"地运行。整个过程,不会阻碍调用者的工作。

示例:

淘宝上购物,我们只需要把商品加入购物车,付款就好了,其他物流配送的环节都是异步执行的。

    2.并发和并行

并发:多个任务交替运行

并行:多个任务平行的运行

一个CPU的话,肯定是并发。并行只能发生在多个CPU的情况下。

    3.临界区

临界区来表示一种公共资源或者是共享数据,可以被多个线程使用。但是每一次,只能有一个线程使用它,一旦临界区资源被占用,其他线程想要这个资源,就必须等待。

举例:

一个办公室只有一台打印机,小名和小刚同时需要打印文件,很显然,只能一个一个来。这里的打印机的例子就是一个临界区。

    4.阻塞和非阻塞

阻塞和非阻塞通常用来形容多线程间的相互影响。比如一个线程占用了临界区资源,那么其他所有需要这个资源的线程就必须在这个临界区中进行等待。等待会导致线程挂起,这种情况就是阻塞。此时,如果占用资源的线程一直不愿意释放资源,那么其他所有阻塞在这个临界区上的线程都不能工作。

非阻塞的意思与之相反,他强调没有一个线程可以妨碍其他线程执行。所有的线程都会尝试不断向前执行。

    5.死锁、饥饿 、活锁

死锁: A车想入库,B车想出库。结果谁也不让谁。这时候就是死锁。

饥饿: 某个线程由于种种原因无法获得想要的资源,导致一直无法执行。比如他的线程优先级过低,而高优先级的线程不断抢占他的资源,导致低优先级线程无法工作。

举例:自然界中,母鸟喂食雏鸟时,很容易出现这种情况。由于雏鸟比较多,食物有限,雏鸟之间的竞争可能很激烈,小雏鸟因为经常抢不到食物,可能被饿死。

活锁:

转载于:https://my.oschina.net/u/1178126/blog/1920733

java线程入门篇(一)相关推荐

  1. JAVA中整型常量的长度,Java基础入门篇(三)——Java常量、变量,

    Java基础入门篇(三)--Java常量.变量, 一.Java常量 (一)什么是常量 常量指的是在程序中固定不变的值,是不能改变的数据.在Java中,常量包括整型常量.浮点型常量.布尔常量.字符常量等 ...

  2. Java爬虫入门篇---Jsoup工具

    Java爬虫入门篇---Jsoup工具 前言 准备工作 获取文本数据 获取页面中所有的图片 前言 pythoy的scrapy框架是大名鼎鼎,Jsoup则为Java框架的爬虫 准备工作 1.下载jsou ...

  3. Java高并发编程详解系列-Java线程入门

    根据自己学的知识加上从各个网站上收集的资料分享一下关于java高并发编程的知识点.对于代码示例会以Maven工程的形式分享到个人的GitHub上面.   首先介绍一下这个系列的东西是什么,这个系列自己 ...

  4. javascript java html_JS入门篇(二):在html中如何使用Javascript

    原标题:JS入门篇(二):在html中如何使用Javascript (1)java的使用 HTML 中的脚本必须位于 <> 与 > 标签之间.脚本可被放置在 HTML 页面的 和 部 ...

  5. 穿越 java | 快速入门篇 - 第1节 计算机基础知识

    主题:计算机基础知识 开发环境 更多干货 定义 作用 组成元件 CPU 内存 cpu里的高速缓存 BIOS软件(基础输入输出系统) CMOS芯片 机械硬盘 组成 数据存取过程 文件编码 ASCII G ...

  6. Java框架入门篇——Spring

    文章目录 前言 1.Spring是什么? 2.Spring 的优点? 3.Spring的IoC理解 4.Spring的AOP理解 5.BeanFactory和ApplicationContext有什么 ...

  7. java线程入门到精通_JAVA入门到精通6.1-Java线程的概念

    和其他多数计算机语言不同,Java内置支持多线程编程(multithreaded programming). 多线程程序包含两条或两条以上并发运行的部分.程序中每个这样的部分都叫一个线程(thread ...

  8. java线程入门_java多线程快速入门(一)

    1.什么是进程 比如:QQ.QQ游戏.eclipse都是进程,可以通过任务管理器查看进程 2.进程和线程区别 线程是进程的一部分,一个进程可以包含多个线程,一个线程只能属于一个进程 进程是所有线程的集 ...

  9. java查询日期类的表,JAVA菜鸟入门篇 - 时间处理相关类实例:打印该月日期表 (29)...

    利用前面我们所学习有关时间处理类,Date.DateFormat.SimpleDateFormat以及Calendar和GregorianCalendar类 编写一个按照用户定义格式(格式:2015- ...

最新文章

  1. c# for 应输入;
  2. 以太网帧,ARP报文
  3. java 操作 mongodb_Java操作MongoDB数据库方法详解
  4. 微信小程序自定义授权弹框
  5. SharePoint 2010 使用自定义aspx页面替换列表默认的新建(NewForm.aspx),查看(DispForm.aspx)和编辑(EditForm.aspx)页面...
  6. MongoDB基础之六 索引
  7. Linux系统编程9:进程入门之操作系统为什么这么重要以及它是如何实现管理的
  8. 是什么还让你停留在 iOS 平台?是这些理由吗
  9. 真正的商用量子电脑!IBM推 Q System One
  10. matlab 求解 Ax=B 时所用算法
  11. I2C 时序、速率计算及intel I2C驱动
  12. 有了手机远程控制手机的软件,在家突然收到工作任务也不怕
  13. 配置OSPF负载分担
  14. 计算机原理说课教案,《计算机系统及工作原理说课稿》
  15. 把ipa包上传入AppStore
  16. CentOS解决nginx autoindex 截断文件名,末尾出现乱码
  17. android 屏幕方向监听,Android如何监听屏幕旋转
  18. JS控制字体大小中、设为首页、收藏本站功能、超链接去掉颜色
  19. php 分隔视频,视频画面分割器怎么将视频画面分割成三部分?怎么分割视频画面并凸显部分?...
  20. flutter icon 大全

热门文章

  1. 2022年斯坦福AI Index公布:中美主导跨国研究,专利、投资金额暴增
  2. PPT讲解机器人产业发展现状与未来展望,重磅资料
  3. 未来五年人工智能将实现的五大突破
  4. 科学:螳螂虾大脑拥有记忆和学习中心
  5. 远程办公中的IT女性:工作量增加3倍,离职率却下降近50%
  6. 老码农揭开行业黑幕:如何编写无法维护的代码
  7. 中兴智能视觉大数据报:要注意,人工智能将衍生更多工作机会
  8. 你不知道的z-index
  9. php--------返回404状态
  10. 构建一个给爬虫使用的代理IP池