Avatar notebook default
13篇文章 · 41582字 · 2人关注
  • 第十六章——Java 内存模型

    16.1 什么是内存模型,为什么需要它 假设一个线程为变量 aVariable 赋值: 内存模型需要解决这个问题:“在什么条件下,读取 aVar...

  • 第十五章——原子变量与非阻塞同步机制

    在 java.util.concurrent 包的许多类中,例如 Semaphore 和 ConcurrentLinkedQueue,都提供了比...

  • Resize,w 360,h 240
    第十四章——构建自定义的同步工具

    如果类库没有提供你需要的功能,那么还可以使用 Java 语言和类库提供的底层机制来构造自己的同步机制,包括内置的条件队列、显式的 Conditi...

  • 第十三章——显式锁

    在 Java 5.0 之前,在协调对共享对象的访问时可以使用的机制只有 synchronized 和 volatile。Java 5.0 增加了...

  • 第十一章——性能与可伸缩性

    11.3 线程引入的开销 11.3.1 上下文切换 切换上下文需要一定的开销,而在线程调度过程中需要访问由操作系统和 JVM 共享的数据结构。应...

  • 第十章——避免活跃性危险

    在安全性与活跃性之间通常存在着某种制衡。我们使用加锁机制来确保线程安全,但如果过度地使用加锁,则可能导致锁顺序死锁(Lock-Ording De...

  • 第八章——线程池的使用

    8.3 配置 ThreadPoolExecutor ThreadPoolExecutor 为一些 Executor 提供了基本的实现,这些 Ex...

  • Resize,w 360,h 240
    第七章——取消与关闭

    7.1 任务取消 如果外部代码能在某个操作正常完成之前将其置入 “完成” 状态,那么这个操作就可以成为可取消的(Cancellable)。取消某...

  • 第六章——任务执行

    6.2 Executor 框架 在 Java 类库中,任务执行的主要抽象不是 Thread,而是 Executor。 虽然 Executor 是...

文集作者