![Avatar notebook default](https://cdn2.jianshu.io/assets/default_avatar/avatar-notebook-default-640f7dde88592bdf6417d8ce1902636e.png)
16.1 什么是内存模型,为什么需要它 假设一个线程为变量 aVariable 赋值: 内存模型需要解决这个问题:“在什么条件下,读取 aVar...
在 java.util.concurrent 包的许多类中,例如 Semaphore 和 ConcurrentLinkedQueue,都提供了比...
如果类库没有提供你需要的功能,那么还可以使用 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...
7.1 任务取消 如果外部代码能在某个操作正常完成之前将其置入 “完成” 状态,那么这个操作就可以成为可取消的(Cancellable)。取消某...
6.2 Executor 框架 在 Java 类库中,任务执行的主要抽象不是 Thread,而是 Executor。 虽然 Executor 是...
文集作者