Java 多线程学习(1)一些容易被遗忘的基础概念
转载请注明原创出处,谢谢!
HappyFeet的博客
有些知识很久不看很容易就会忘掉,尤其是一些概念性知识。好记性不如烂笔头,不如记下来便于以后翻看。
1、并发和并行
- 并发:处理多个任务的能力,不一定要同时。
- 并行:同时处理多个任务的能力。
二者区别在于是否同时。参考:并发与并行的区别?
2、进程和线程
放几个比较有趣的答案,参考:线程和进程的区别是什么?
进程和线程都是一个时间段的描述,是 CPU 工作时间段的描述,只不过颗粒大小不同。
进程就是时间总和 = CPU 加载程序上下文的时间 + CPU 执行时间 + CPU 保存程序上下文的时间线程也是时间总和 = CPU 加载线程上下文的时间 + CPU 执行时间 + CPU 保存线程上下文的时间
进程是爹妈,管着众多的线程儿子
3、线程安全性
当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将如何交替执行,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为,那么就称这个类是线程安全的。摘自:《Java 并发编程实战》
4、竞态条件和临界区
当多个线程竞争同一资源时,如果对资源的访问顺序敏感,就称存在竞态条件。导致竞态条件发生的代码区称作临界区。
5、线程的生命周期
- NEW:新建
- RUNNABLE:运行
- BLOCKED:阻塞
- WAITING:无限期等待
- TIMED_WAITING:限期等待
- TERMINATED:结束
6、Java 线程调度
线程调度是指系统为线程分配处理器使用权的过程,主要调度方式有两种,分别是协同式线程调度和抢占式线程调度。
7、僵尸进程和孤儿进程
- 一个进程使用
fork
创建子进程,如果子进程退出,而父进程并没有调用wait
或waitpid
获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程称之为僵尸进程(或称僵死进程)。 - 一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。
参考资料:
(1)《深入理解 Java 虚拟机》周志明 著.
(2)《Java 并发编程实战》
(3)并发与并行的区别?
(4)线程和进程的区别是什么?
Java 多线程学习(1)一些容易被遗忘的基础概念相关推荐
- Java多线程学习处理高并发问题
在程序的应用程序中,用户或请求的数量达到一定数量,并且无法避免并发请求.由于对接口的每次调用都必须在返回时终止,因此,如果接口的业务相对复杂,则可能会有多个用户.调用接口时,该用户将冻结. 以下内容将 ...
- java多线程学习-java.util.concurrent详解
http://janeky.iteye.com/category/124727 java多线程学习-java.util.concurrent详解(一) Latch/Barrier 博客分类: java ...
- Java多线程学习(二)synchronized关键字(1)
转载请备注地址: https://blog.csdn.net/qq_34337272/article/details/79655194 Java多线程学习(二)将分为两篇文章介绍synchronize ...
- java多线程学习笔记。
java多线程学习笔记 线程的优缺点: 多线程的好处: 充分利用多处理核心,提高资源的利用率和吞吐量. 提高接口的响应效率,异步系统工作. 线程的风险: 安全危险(竞争条件):什么坏事都没有发生.在没 ...
- 【转】Java 多线程学习
原网址:https://www.cnblogs.com/yjd_hycf_space/p/7526608.html Java多线程学习(总结很详细!!!) 此文只能说是java多线程的一个入门,其实J ...
- 转:Java多线程学习(总结很详细!!!)
Java多线程学习(总结很详细!!!) 此文只能说是java多线程的一个入门,其实Java里头线程完全可以写一本书了,但是如果最基本的你都学掌握好,又怎么能更上一个台阶呢? 本文主要讲java中多线程 ...
- Java多线程学习——01
Java多线程学习--01 1.核心概念 程序:是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念 进程Process:是执行程序的一次执行过程,它是一个动态的概念,是系统资源分配的单 ...
- java线程学习,GitHub - zksir/thread: Java多线程学习
Java多线程学习 threadcoreknowledge包----线程核心知识基础 createthreads包 创建线程 1.实现多线程的方法是1种还是2种还是4种? Oracle官方:2种,一种 ...
- Java多线程学习之路(四)---死锁(DeadLock)
Java多线程学习之路(四)-死锁(DeadLock) 1.定义 死锁就是多个线程在竞争共享资源的时候,相互阻塞,不能脱身的状态(个人理解).其实死锁一定程度上可以看成一个死循环. 举个现实生活中的例 ...
- Java多线程学习 (超详细总结)
Java多线程学习 一.概要 二. JAVA 线程实现/创建方式 2.1 继承Thread 类 2.2 实现 Runnable 接口 2.3 Thread和Runnable的区别 2.4 总结 三.线 ...
最新文章
- centos6.6 Kickstart无人值守安装(一):原理篇
- Silverlight开发常见的一个小问题:2103错误
- CodeForces - 979D Kuro and GCD and XOR and SUM(字典树+暴力+模拟)
- Oracle约数,Oracle约束简介
- vue 集成 Loading 加载效果
- 关于SQLServer2005的学习笔记——SQL查询解析步骤
- CleanMyMac下载正版清理苹果mac系统电脑蓝奏云
- 体检结果(2018年10月,胃肠镜)
- C语言一个数组中随机抽取5个数字
- Android 3D画廊
- Jackson转换java对象与json对象
- 微信小程序设置背景图片
- Ping计算机名和Ping网站域名都是由DNS解析吗?
- Java实现doc转docx
- Matlab——深度学习工具箱
- 《软件方法(上)业务建模和需求》第2版 勘误(2022年10月24日更新)
- STM32的IIC(模拟)读写AT24c02
- 汽车CAN总线系统原理与应用
- 5.1-5.31推荐文章汇总
- .htaccess中的apache rewrite规则写法详解