java线程 教程_Java多线程系列教程
Java多线程系列教程
多线程是Java中不可避免的一个重要主体。从本章开始,我们将展开对多线程的学习。接下来的内容是对Java多线程内容的讲解,涉及到的内容包括,Object类中的wait(), notify()等接口;Thread类中的接口;synchronized关键字。
在进入后面章节的学习之前,先对了解一些多线程的相关概念。
线程状态图
线程共包括以下5种状态
1. 新建状态(New) : 线程对象被创建后,就进入了新建状态。例如,Thread thread = new Thread()。
2. 就绪状态(Runnable): 也被称为“可执行状态”。线程对象被创建后,其它线程调用了该对象的start()方法,从而来启动该线程。例如,thread.start()。处于就绪状态的线程,随时可能被CPU调度执行。
3. 运行状态(Running) : 线程获取CPU权限进行执行。需要注意的是,线程只能从就绪状态进入到运行状态。
4. 阻塞状态(Blocked) : 阻塞状态是线程因为某种原因放弃CPU使用权,暂时停止运行。直到线程进入就绪状态,才有机会转到运行状态。阻塞的情况分三种:
(01) 等待阻塞 -- 通过调用线程的wait()方法,让线程等待某工作的完成。
(02) 同步阻塞 -- 线程在获取synchronized同步锁失败(因为锁被其它线程所占用),它会进入同步阻塞状态。
(03) 其他阻塞 -- 通过调用线程的sleep()或join()或发出了I/O请求时,线程会进入到阻塞状态。当sleep()状态超时、join()等待线程终止或者超时、或者I/O处理完毕时,线程重新转入就绪状态。
5. 死亡状态(Dead) : 线程执行完了或者因异常退出了run()方法,该线程结束生命周期。
Java多线程系列教程目录
版权声明:本文为JAVASCHOOL原创文章,未经本站允许不得转载。
java线程 教程_Java多线程系列教程相关推荐
- java线程钥匙_Java多线程并发编程/锁的理解
一.前言 最近项目遇到多线程并发的情景(并发抢单&恢复库存并行),代码在正常情况下运行没有什么问题,在高并发压测下会出现:库存超发/总库存与sku库存对不上等各种问题. 在运用了 限流/加锁等 ...
- java线程池_Java多线程并发:线程基本方法+线程池原理+阻塞队列原理技术分享...
线程基本方法有哪些? 线程相关的基本方法有 wait,notify,notifyAll,sleep,join,yield 等. 线程等待(wait) 调用该方法的线程进入 WAITING 状态,只有等 ...
- java线程基础_Java多线程基础
前言 在我们工作和学习的过程中,Java线程我们或多或少的都会用到,但是在使用的过程上并不是很顺利,会遇到各种各样的坑,这里我通过讲解Thread类中的核心方法,以求重点掌握以下关键技术点: 线程的启 ...
- java线程入门_java多线程快速入门(一)
1.什么是进程 比如:QQ.QQ游戏.eclipse都是进程,可以通过任务管理器查看进程 2.进程和线程区别 线程是进程的一部分,一个进程可以包含多个线程,一个线程只能属于一个进程 进程是所有线程的集 ...
- java线程 锁_Java多线程(二) 多线程的锁机制
当两条线程同时访问一个类的时候,可能会带来一些问题.并发线程重入可能会带来内存泄漏.程序不可控等等.不管是线程间的通讯还是线程共享数据都需要使用Java的锁机制控制并发代码产生的问题.本篇总结主要著名 ...
- java线程设计模式_JAVA多线程设计模式
漫谈UML UML 类图 类和层次结构的关系 接口与实现 聚合 访问控制 类间的关联性 顺序图 处理流程和对象间的协调 时序图 Introduction 1 Java语言的线程 Java语言的线程 何 ...
- java nio多路复用_Java NIO系列教程(六) 多路复用器Selector
多路复用器Selector是Java NIO编程的基础,熟练地掌握Selector对于掌握NIO编程至关重要.多路复用器提供选择已经就绪的任务的能力.简单来讲,Selector会不断地轮询注册在其上的 ...
- java线程栅栏_Java多线程并发系列之闭锁(Latch)和栅栏(CyclicBarrier)
今天项目上遇到一个多线程任务问题,大概图文描述一下: 1.前端需要及时返回任务状态 2.后台开了一个任务线程去执行具体的业务,业务包括四个部分,四个部分全部完成才算完成 3.业务中某些耗时的或者需要多 ...
- java.nio教程_Java NIO系列教程(三) Buffer
原文链接 作者:Jakob Jenkov 译者:airu 校对:丁一 Java NIO中的Buffer用于和NIO通道进行交互.如你所知,数据是从通道读入缓冲区,从缓冲区写入到 ...
最新文章
- 韦世东:计划 35 岁「退休」的资深爬虫工程师
- 207. Course Schedule 210. Course Schedule II
- form-data php,PHP 模拟form-data上传文件
- 定时执行程序-Quartz简单实例
- 四元数姿态解算及多传感器融合详细解析
- IOS 自定义NIB视图
- 【刷题】LOJ 6011 「网络流 24 题」运输问题
- [C++11]推荐使用auto的场景
- 前端学习(3220):props的简写方式
- minist数据集下载,numpy可直接读取的npy格式
- Gambit 1.Gambit环境
- ESP32 LVGL8.1 ——Roller 滚动 (Roller 24)
- javascript 生成 UUID GUID 浏览器环境 NodeJS环境 纯JavaScript函数
- 黑少微服务商店实战经验分享:从单体式架构迁移到微服务架构
- JS间隔指定字符数后面插入
- Oracle FND - 用户API fnd_user_pkg的常用用法
- 清除FreeIPA SSSD缓存
- 图片工具GraphicsMagick的下载安装配置使用
- 关于错排公式的推导与应用
- 粉丝福利-2019云栖大会学习资料
热门文章
- 20145317 《网络对抗技术》免杀原理与实践
- BA-Alerton系统简介
- 转:关于CCDISK的优化
- *45.程序的装入方式
- Fedora WIFI频繁断开问题的解决办法
- 在量子计算机到来之前,请准备好抗量子破解的密码学
- 深度神经网络:WX+B vs XW+B,作者原文已经删除,转载过来了~~~
- 苹果证实收购Drive.ai自动驾驶汽车初创公司
- Fedora 30将获得Bash 5.0,淘汰Yum推迟到Fedora 31
- deny后加to do还是doing_动词后加to do 和 doing 的 记忆口诀