
java并发编程
Qgwperfect
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
线程池拒绝策略-RejectedExecutionHandler
当线程池中的线程数目达到maximumPoolSize,且任务缓存队列已满时,如果还有任务到来就会采取任务拒绝策略,通常有以下四种策略: ThreadPoolExecutor.AbortPolicy:丢弃任务并抛出RejectedExecutionException异常。 ThreadPoolExecutor.DiscardPolicy:也是丢弃任务,但是不抛出异常。 ThreadPoolExecutor.DiscardOldestPolicy:丢弃队列最前面的任务,然后重新尝试执行任务(重复此过程)转载 2020-07-29 12:32:39 · 1098 阅读 · 0 评论 -
JAVA并发编程实战---在没有同步的情况下共享变量
读《JAVA并发编程实战》笔记 代码示例: public class NoVisibility { private static boolean ready; private static int number; private static class ReaderThread extends Thread{ public void run() { while(!...原创 2019-03-20 15:21:16 · 321 阅读 · 0 评论 -
JAVA并发编程实战---非原子64位操作
读《JAVA并发编程实战》笔记 非volatile类型的64位数值变量(double和long)。在Java内存模型要求,变量的读取操作和写入操作都必须是原子操作,但对于非volatile类型的double和long变量,JVM允许将64位的读操作或写操作分解为两个32位的操作。当读取一个非volatile类型的long变量时,如果对该变量的读操作和写操作在不同的线程中执行,那么...原创 2019-03-20 15:37:10 · 293 阅读 · 0 评论 -
JAVA并发编程实战---隐藏迭代器
读《JAVA并发编程实战》笔记 加锁可以防止迭代器抛出ConcurrentModificationException,必须要记住在所有对共享容器进行迭代的地方都需要加锁。实际情况要更加复杂,因为在某些情况下,迭代器会隐藏起来,如下代码: public class HiddenIterator { private final Set<Integer> set = new Has...原创 2019-03-20 18:22:23 · 296 阅读 · 0 评论 -
JAVA并发编程实战---使用FutureTask提前加载稍后需要的数据
读《JAVA并发编程实战》笔记 public class ProductInfo { private String productName; public ProductInfo(String productName) { this.productName = productName; } public void setProductNa...原创 2019-04-03 11:23:37 · 183 阅读 · 0 评论 -
JAVA并发编程实战---Semaphore将容器变成有界阻塞容器
读《JAVA并发编程实战》笔记 可以使用Semaphore将任何一种容器变成有界阻塞容器。 public class BoundedHashSet<T> { private final Set<T> set; private final Semaphore sem; public BoundedHashSet(int bound) { ...原创 2019-04-03 11:42:04 · 150 阅读 · 0 评论