当前位置: 首页 > news >正文

第12章 Java多线程机制

12.1 进程与线程

4种状态:新建、运行、中断和死亡。   (新建、运行、中断和死亡)

建立线程的两种方法:用Thread类或其子类。

线程新建后,必须调用 start () 方法使其进入就绪队列,才有机会获得 CPU 资源,不调用 start () 方法无法获得 CPU 资源

中断的4种原因:(1)JVM将CPU资源从当前线程切换给其他线程,使本线程让出CPU的使用权处于中断状态。(2)线程使用CPU资源期间,执行了sleep(int millsecond)方法,使当前线程进入休眠状态。(3)线程使用CPU资源期间,执行了wait()方法,使得当前线程进入等待状态。(4)线程使用CPU资源期间,执行某个操作进入阻塞状态,比如执行读/写操作引起阻塞。

死亡状态,不能再调用start()方法。run () 方法执行完意味着线程任务已完成,进入死亡状态,处于死亡状态的线程生命周期结束,无法再启动

isAlive () 方法用于判断线程是否存活,当线程执行完 run () 方法或者因异常终止,即进入死亡状态,此时该方法返回 false

一个线程的 run () 方法通常只执行一次,不能多次启动

12.2 Java中的线程

设置线程的两种方法:用Thread类或其子类。

在 Java 中,使用 setPrority(int grade)方法,默认情况下所有线程优先级是 5 级

多线程:Java使我们可以创建多个线程,在处理多线程问题时,我们必须注意这样一个问题:当两个或多个线程同时访问同一个变量,并且一个线程需要修改这个变量。我们应对这样的问题作出处理,否则可能发生混乱。

当一个线程使用的同步方法中用到某个变量,而此变量又需要其它线程修改后才能符合本线程的需要,那么可以在同步方法中使用wait()方法。使用wait方法可以中断方法的执行,使本线程等待,暂时让出CPU的使用权,并允许其它线程使用这个同步方法。其它线程如果在使用这个同步方法时不需要等待,那么它使用完这个同步方法的同时,应当用notifyAll()方法通知所有的由于使用这个同步方法而处于等待的线程结束等待。

当一个线程使用的同步方法中用到某个变量,而此变量又需要其它线程修改后才能符合本线程的需要,那么可以在同步方法中使用wait()方法。使用wait方法可以中断方法的执行,使本线程等待,暂时让出CPU的使用权,并允许其它线程使用这个同步方法。其它线程如果在使用这个同步方法时不需要等待,那么它使用完这个同步方法的同时,应当用notifyAll()方法通知所有的由于使用这个同步方法而处于等待的线程结束等待。

12.3 Thread类与线程的创建

12.4 线程的常用方法

12.5 线程同步

同步方法同一时刻只能被一个线程访问,其他线程需等待

12.6 协调同步的线程

12.7 线程联合

12.8 GUI线程

12.9 计时器线程

12.10 守护线程

相关文章:

  • 什么是迁移学习(Transfer Learning)?
  • 图绘Linux:基础指令脉络阁
  • 高效查询:位图、B+树
  • iOS 工厂模式
  • 【AGI】模型性能评估框架EvalScope
  • C++函数基础:定义与调用函数,参数传递(值传递、引用传递)详解
  • ubuntu 安装mq
  • 碎片笔记|PromptStealer复现要点(附Docker简单实用教程)
  • web系统安全管理
  • Java核心API实战:从字符串到多线程全解析
  • 企业级小程序APP用户数据查询系统安全脆弱性分析及纵深防御体系构建
  • 禾本科植物胚乳的发育
  • 定时器相关概念
  • CSS 浮动(Float)及其应用
  • 2025年、2024年最新版IntelliJ IDEA下载安装过程(含Java环境搭建+Maven下载及配置)
  • Java求职面试揭秘:从Spring到微服务的技术挑战
  • 知识图谱(KG)与大语言模型(LLM)
  • 前端获取用户的公网 IP 地址
  • btc交易所关键需求区 XBIT反弹与上涨潜力分析​​
  • |从零开始的Pyside2界面编程| 环境搭建以及第一个ui界面
  • 假冒政府机构账号卖假货?“假官号”为何屡禁不绝?媒体调查
  • 广西鹿寨一水文站“倒刺扶手”存安全隐患,官方通报处理情况
  • 原核试验基地司令员范如玉逝世,从事核试验研究超40年
  • 对谈|“大礼议”:嘉靖皇帝的礼法困境与权力博弈
  • 银行积分大幅贬值遭质疑,涉及工行、中行、农行等
  • 最高检公布一起离婚纠纷典型案例:推动离婚经济补偿制度落实