type
status
date
slug
summary
tags
category
password
icon
  • ⼀个线程启动别的线程:new Thread().start()Executor.execute()
  • ⼀个线程终结另⼀个线程
    • Thread.stop() :立即终止,破坏性,无法恢复
    • Thread.interrupt():温和式终结:不⽴即、不强制
    • Thread.interrupted()isInterrupted():检查(和重置)中断状态
      • 💡
        Thread.interrupted()isInterrupted() 的区别 Thread.interrupted() 当线程被打断后,第一次调用 Thread.interrupted() 会返回 true,并重置线程的打断状态为 false,当再次调用时,除非线程在这之前又被打断了,否则该方法会返回 false isInterrupted() 只是简单的查询,并不会重置打断状态。
    • InterruptedException:如果在线程「等待」时中断,或者在中断状态「等待」,直接结束等待过程(因为等待过程什么也不会做,⽽ interrupt() 的⽬的是让线程做完收尾⼯作后尽快终结,所以要跳过等待过程)
  • Object.wait()Object.notify() / notifyAll()
    • 在未达到⽬标时 wait()
    • ⽤ while 循环检查
    • 设置完成后 notifyAll()
    • wait()notify() / notifyAll()需要放在同步代码块⾥
  • Thread.join():让另⼀个线程插在⾃⼰前⾯
    • 如果代码执行流程如下
      Main1 → Main2 → A.start(){A1 → A2 → A3} → B.start(){B1 → B2 → B3} → A.join() → Main3 那么当执行到 A.join() 时 Main 线程会等待 A 线程执行完成再执行 Main3
  • Thread.yield():暂时让出⾃⼰的时间⽚给同优先级的线程
    • 如果代码执行流程如下
      Main1 → Main2 → A.start(){A1 → A2 → A3} → B.start(){B1 → B.yield() → B3} → Main3 那么当 B 执行到 B.yield() 时,B 会短暂的让出自己的时间切片,给 A 和 Main 等与 B 同优先级的线程,当其中一个线程拿到时间片执行一个时间片的程序后,就会把时间片还给 B,B 然后继续执行 B3
Rxjava3 原理解析Android多线程机制
Loading...
shuouyang
shuouyang
android开发 ReactNative开发 小程序开发
最新发布
AOSP 环境搭建
2025-3-29
View 绘制流程-源码解析
2025-3-12
HTTP
2025-3-4
JVM 虚拟机
2025-2-28
蓝牙-BLE-基础
2025-2-28
从 OkHttp 的原理来看 HTTP
2025-2-19
公告
🎉热点信息🎉
--- 1 ---
Jet Brains 推出新的跨平台支持 Kotlin MultiPlatform
--- 2 ---
新的小巧便捷的依赖注入框架 Koin
--- 3 ---
新一代 API 查询语言 GraphQL