java线程入门篇(一)
2019独角兽企业重金招聘Python工程师标准>>>
一、线程的相关概念
1.同步和异步
用一次方法调用来说:
同步方法一旦调用开始,便必须等到方法调用返回后,才能继续后面的行为。
异步方法更像是一个消息传递,一旦开始,方法调用就会立即返回,调用者就可以继续后续的操作。异步方法通常会在另外一个线程中"真实"地运行。整个过程,不会阻碍调用者的工作。
示例:
淘宝上购物,我们只需要把商品加入购物车,付款就好了,其他物流配送的环节都是异步执行的。
2.并发和并行
并发:多个任务交替运行
并行:多个任务平行的运行
一个CPU的话,肯定是并发。并行只能发生在多个CPU的情况下。
3.临界区
临界区来表示一种公共资源或者是共享数据,可以被多个线程使用。但是每一次,只能有一个线程使用它,一旦临界区资源被占用,其他线程想要这个资源,就必须等待。
举例:
一个办公室只有一台打印机,小名和小刚同时需要打印文件,很显然,只能一个一个来。这里的打印机的例子就是一个临界区。
4.阻塞和非阻塞
阻塞和非阻塞通常用来形容多线程间的相互影响。比如一个线程占用了临界区资源,那么其他所有需要这个资源的线程就必须在这个临界区中进行等待。等待会导致线程挂起,这种情况就是阻塞。此时,如果占用资源的线程一直不愿意释放资源,那么其他所有阻塞在这个临界区上的线程都不能工作。
非阻塞的意思与之相反,他强调没有一个线程可以妨碍其他线程执行。所有的线程都会尝试不断向前执行。
5.死锁、饥饿 、活锁
死锁: A车想入库,B车想出库。结果谁也不让谁。这时候就是死锁。
饥饿: 某个线程由于种种原因无法获得想要的资源,导致一直无法执行。比如他的线程优先级过低,而高优先级的线程不断抢占他的资源,导致低优先级线程无法工作。
举例:自然界中,母鸟喂食雏鸟时,很容易出现这种情况。由于雏鸟比较多,食物有限,雏鸟之间的竞争可能很激烈,小雏鸟因为经常抢不到食物,可能被饿死。
活锁:
转载于:https://my.oschina.net/u/1178126/blog/1920733
java线程入门篇(一)相关推荐
- JAVA中整型常量的长度,Java基础入门篇(三)——Java常量、变量,
Java基础入门篇(三)--Java常量.变量, 一.Java常量 (一)什么是常量 常量指的是在程序中固定不变的值,是不能改变的数据.在Java中,常量包括整型常量.浮点型常量.布尔常量.字符常量等 ...
- Java爬虫入门篇---Jsoup工具
Java爬虫入门篇---Jsoup工具 前言 准备工作 获取文本数据 获取页面中所有的图片 前言 pythoy的scrapy框架是大名鼎鼎,Jsoup则为Java框架的爬虫 准备工作 1.下载jsou ...
- Java高并发编程详解系列-Java线程入门
根据自己学的知识加上从各个网站上收集的资料分享一下关于java高并发编程的知识点.对于代码示例会以Maven工程的形式分享到个人的GitHub上面. 首先介绍一下这个系列的东西是什么,这个系列自己 ...
- javascript java html_JS入门篇(二):在html中如何使用Javascript
原标题:JS入门篇(二):在html中如何使用Javascript (1)java的使用 HTML 中的脚本必须位于 <> 与 > 标签之间.脚本可被放置在 HTML 页面的 和 部 ...
- 穿越 java | 快速入门篇 - 第1节 计算机基础知识
主题:计算机基础知识 开发环境 更多干货 定义 作用 组成元件 CPU 内存 cpu里的高速缓存 BIOS软件(基础输入输出系统) CMOS芯片 机械硬盘 组成 数据存取过程 文件编码 ASCII G ...
- Java框架入门篇——Spring
文章目录 前言 1.Spring是什么? 2.Spring 的优点? 3.Spring的IoC理解 4.Spring的AOP理解 5.BeanFactory和ApplicationContext有什么 ...
- java线程入门到精通_JAVA入门到精通6.1-Java线程的概念
和其他多数计算机语言不同,Java内置支持多线程编程(multithreaded programming). 多线程程序包含两条或两条以上并发运行的部分.程序中每个这样的部分都叫一个线程(thread ...
- java线程入门_java多线程快速入门(一)
1.什么是进程 比如:QQ.QQ游戏.eclipse都是进程,可以通过任务管理器查看进程 2.进程和线程区别 线程是进程的一部分,一个进程可以包含多个线程,一个线程只能属于一个进程 进程是所有线程的集 ...
- java查询日期类的表,JAVA菜鸟入门篇 - 时间处理相关类实例:打印该月日期表 (29)...
利用前面我们所学习有关时间处理类,Date.DateFormat.SimpleDateFormat以及Calendar和GregorianCalendar类 编写一个按照用户定义格式(格式:2015- ...
最新文章
- c# for 应输入;
- 以太网帧,ARP报文
- java 操作 mongodb_Java操作MongoDB数据库方法详解
- 微信小程序自定义授权弹框
- SharePoint 2010 使用自定义aspx页面替换列表默认的新建(NewForm.aspx),查看(DispForm.aspx)和编辑(EditForm.aspx)页面...
- MongoDB基础之六 索引
- Linux系统编程9:进程入门之操作系统为什么这么重要以及它是如何实现管理的
- 是什么还让你停留在 iOS 平台?是这些理由吗
- 真正的商用量子电脑!IBM推 Q System One
- matlab 求解 Ax=B 时所用算法
- I2C 时序、速率计算及intel I2C驱动
- 有了手机远程控制手机的软件,在家突然收到工作任务也不怕
- 配置OSPF负载分担
- 计算机原理说课教案,《计算机系统及工作原理说课稿》
- 把ipa包上传入AppStore
- CentOS解决nginx autoindex 截断文件名,末尾出现乱码
- android 屏幕方向监听,Android如何监听屏幕旋转
- JS控制字体大小中、设为首页、收藏本站功能、超链接去掉颜色
- php 分隔视频,视频画面分割器怎么将视频画面分割成三部分?怎么分割视频画面并凸显部分?...
- flutter icon 大全