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多线程系列教程相关推荐

  1. java线程钥匙_Java多线程并发编程/锁的理解

    一.前言 最近项目遇到多线程并发的情景(并发抢单&恢复库存并行),代码在正常情况下运行没有什么问题,在高并发压测下会出现:库存超发/总库存与sku库存对不上等各种问题. 在运用了 限流/加锁等 ...

  2. java线程池_Java多线程并发:线程基本方法+线程池原理+阻塞队列原理技术分享...

    线程基本方法有哪些? 线程相关的基本方法有 wait,notify,notifyAll,sleep,join,yield 等. 线程等待(wait) 调用该方法的线程进入 WAITING 状态,只有等 ...

  3. java线程基础_Java多线程基础

    前言 在我们工作和学习的过程中,Java线程我们或多或少的都会用到,但是在使用的过程上并不是很顺利,会遇到各种各样的坑,这里我通过讲解Thread类中的核心方法,以求重点掌握以下关键技术点: 线程的启 ...

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

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

  5. java线程 锁_Java多线程(二) 多线程的锁机制

    当两条线程同时访问一个类的时候,可能会带来一些问题.并发线程重入可能会带来内存泄漏.程序不可控等等.不管是线程间的通讯还是线程共享数据都需要使用Java的锁机制控制并发代码产生的问题.本篇总结主要著名 ...

  6. java线程设计模式_JAVA多线程设计模式

    漫谈UML UML 类图 类和层次结构的关系 接口与实现 聚合 访问控制 类间的关联性 顺序图 处理流程和对象间的协调 时序图 Introduction 1 Java语言的线程 Java语言的线程 何 ...

  7. java nio多路复用_Java NIO系列教程(六) 多路复用器Selector

    多路复用器Selector是Java NIO编程的基础,熟练地掌握Selector对于掌握NIO编程至关重要.多路复用器提供选择已经就绪的任务的能力.简单来讲,Selector会不断地轮询注册在其上的 ...

  8. java线程栅栏_Java多线程并发系列之闭锁(Latch)和栅栏(CyclicBarrier)

    今天项目上遇到一个多线程任务问题,大概图文描述一下: 1.前端需要及时返回任务状态 2.后台开了一个任务线程去执行具体的业务,业务包括四个部分,四个部分全部完成才算完成 3.业务中某些耗时的或者需要多 ...

  9. java.nio教程_Java NIO系列教程(三) Buffer

    原文链接     作者:Jakob Jenkov     译者:airu     校对:丁一 Java NIO中的Buffer用于和NIO通道进行交互.如你所知,数据是从通道读入缓冲区,从缓冲区写入到 ...

最新文章

  1. 韦世东:计划 35 岁「退休」的资深爬虫工程师
  2. 207. Course Schedule 210. Course Schedule II
  3. form-data php,PHP 模拟form-data上传文件
  4. 定时执行程序-Quartz简单实例
  5. 四元数姿态解算及多传感器融合详细解析
  6. IOS 自定义NIB视图
  7. 【刷题】LOJ 6011 「网络流 24 题」运输问题
  8. [C++11]推荐使用auto的场景
  9. 前端学习(3220):props的简写方式
  10. minist数据集下载,numpy可直接读取的npy格式
  11. Gambit 1.Gambit环境
  12. ESP32 LVGL8.1 ——Roller 滚动 (Roller 24)
  13. javascript 生成 UUID GUID 浏览器环境 NodeJS环境 纯JavaScript函数
  14. 黑少微服务商店实战经验分享:从单体式架构迁移到微服务架构
  15. JS间隔指定字符数后面插入
  16. Oracle FND - 用户API fnd_user_pkg的常用用法
  17. 清除FreeIPA SSSD缓存
  18. 图片工具GraphicsMagick的下载安装配置使用
  19. 关于错排公式的推导与应用
  20. 粉丝福利-2019云栖大会学习资料

热门文章

  1. 20145317 《网络对抗技术》免杀原理与实践
  2. BA-Alerton系统简介
  3. 转:关于CCDISK的优化
  4. *45.程序的装入方式
  5. Fedora WIFI频繁断开问题的解决办法
  6. 在量子计算机到来之前,请准备好抗量子破解的密码学
  7. 深度神经网络:WX+B vs XW+B,作者原文已经删除,转载过来了~~~
  8. 苹果证实收购Drive.ai自动驾驶汽车初创公司
  9. Fedora 30将获得Bash 5.0,淘汰Yum推迟到Fedora 31
  10. deny后加to do还是doing_动词后加to do 和 doing 的 记忆口诀