java.util.concurrent包翻译文章
java.util.concurrent
运动员写代码
这个作者很懒,什么都没留下…
展开
-
JAVA并发-AtomicReferenceArray
AtomicReferenceArray类 (java.util.concurrent.atomic. AtomicReferenceArray) 代表着对象引用数组,在AtomicReferenceArray中的Object元素可以原子性的更新,AtomicReferenceArray中的Object元素同样支持CAS操作。创建AtomicReferenceArray可以用两个构造函数中的一个创建AtomicReferenceArray,第一个构造函数需要一个int类型参数,int参数...原创 2020-08-26 09:54:50 · 857 阅读 · 0 评论 -
JAVA并发-AtomicLongArray
AtomicLongArray类 (java.util.concurrent.atomic. AtomicLongArray) 代表着long数组,在AtomicLongArray中的long元素可以原子性的更新,AtomicLongArray中的long元素同样支持CAS操作。创建AtomicLongArray可以用两个构造函数中的一个创建AtomicLongArray,第一个构造函数需要一个int类型参数,int参数指定了AtomicLongArray创建的长度,意思就是需要分配...原创 2020-08-25 10:27:15 · 305 阅读 · 0 评论 -
JAVA并发-AtomicIntegerArray
AtomicIntegerArray类 (java.util.concurrent.atomic.AtomicIntegerArray) 代表着int数组,在AtomicIntegerArray中的int元素可以原子性的更新,AtomicIntegerArray中的int元素同样支持CAS操作。创建AtomicIntegerArray可以用两个构造函数中的一个创建AtomicIntegerArray,第一个构造函数需要一个int类型参数,int参数指定了AtomicIntegerArray创建...原创 2020-08-24 14:36:54 · 838 阅读 · 0 评论 -
JAVA并发-AtomicStampedReference
AtomicStampedReference类提供了对对象引用变量的原子读和写, AtomicStampedReference是指多个试图更改同一AtomicStampedReference的线程不会使AtomicStampedReference最终处于不一致的状态。AtomicStampedReference和AtomicReference不一样的是,AtomicStampedReference在内部同时保留对象引用和数据戳,引用和数据戳可以通过compareAndSet()方法使用单CAS操作...原创 2020-08-17 22:15:27 · 1070 阅读 · 0 评论 -
JAVA并发-AtomicReference
AtomicReference类提供了对对象引用变量的原子读和写,原子性意味着多个线程试图更改同一个AtomicReference(例如,通过CAS操作)不会使AtomicReference最终处于不一致的状态。AtomicReference有一个高级的compareAndSet()方法,它允许您将引用与预期值(reference)进行比较,如果它们相等,则在AtomicReference对象内设置一个新的引用/创建 AtomicReference下面是创建AtomicReference实例:.原创 2020-08-15 17:55:06 · 877 阅读 · 0 评论 -
JAVA并发-AtomicLong
AtomicLong类提供了long类型的变量与AtomicInteger非常类似,变量可以原子写和读,同时还包括先进的原子操作例如compareAndSet()。AtomicLong类位于java.util.concurrent.atomic包中,全名java.util.concurrent.atomic.AtomicLong。本文讲述JAVA8中的AtomicLong,但是第一个版本是在Java 5中。关于AtomicLong设计原理可以参考Compare and Swap创建...原创 2020-08-12 21:42:23 · 916 阅读 · 0 评论 -
JAVA并发-AtomicInteger
AtomicInteger类提供了int类型的变量,变量可以原子写和读,同时还包括先进的原子操作例如compareAndSet()。AtomicInteger类位于java.util.concurrent.atomic包中,全名java.util.concurrent.atomic. AtomicInteger。本文讲述JAVA8中的AtomicBoolean,但是第一个版本是在Java 5中。关于AtomicInteger设计原理可以参考Compare and Swap。创建At...原创 2020-08-11 22:21:37 · 785 阅读 · 0 评论 -
JAVA并发-AtomicBoolean
AtomicBoolean类提供了boolean类型的变量,变量可以原则写和读,同时还包括先进的原子操作例如compareAndSet()。AtomicBoolean类位于java.util.concurrent.atomic包中,全名java.util.concurrent.atomic.AtomicBoolean。本文讲述JAVA8中的AtomicBoolean,但是第一个版本是在Java 5中。关于AtomicBoolean设计原理可以参考Compare and Swap。创建一个...原创 2020-08-10 21:46:19 · 1403 阅读 · 0 评论 -
JAVA并发-Fork/Join使用ForkJoinPool
Java 7中新加了ForkJoinPool,ForkJoinPool和ExecutorService非常相似,但是有一点不同,ForkJoinPool使任务能够很容易地将它们的工作拆分成更小的任务,然后再提交给ForkJoinPool。任务可以继续将其工作拆分为更小的子任务,只要它能够拆分任务,这听起来有点抽象,下面会解释ForkJoinPool怎么工作,以及怎么拆分任务。Fork/Join解释在了解ForkJoinPool直接,我想先解释一下fork/join得工作原理。Fork/...原创 2020-08-09 22:06:20 · 584 阅读 · 0 评论 -
JAVA并发-ScheduledExecutorService
java.util.concurrent.ScheduledExecutorService是一个可以安排任务延迟执行的ExecutorService, 或者以固定的时间间隔重复执行。任务通过一个工作线程异步执行,而不是提交任务到ScheduledExecutorService的线程。ScheduledExecutorService例子下面是ScheduledExecutorService例子:ScheduledExecutorService scheduledExecutorServic..原创 2020-08-04 11:21:26 · 704 阅读 · 0 评论 -
JAVA并发-ThreadPoolExecutor
java.util.concurrent.ThreadPoolExecutor是ExecutorService(前面已经讲过)接口的一个实现. ThreadPoolExecutor使用其内部池线程之一执行给定任务(CallableorRunnable)。ThreadPoolExecutor内部的线程池包含了不能数量的线程,线程池中线程的数量可以通过以下变量来定义:corePoolSize maximumPoolSize如果在将任务委派给线程池时在线程池中创建的线程小于core...原创 2020-08-03 17:33:08 · 192 阅读 · 0 评论 -
JAVA并发-Future
java.util.concurrent.Future, 代表着通过异步计算返回结果,创建异步任务时,返回一个java Future对象。异步任务完成后,可以通过启动任务时返回的Future对象访问结果,一些Java的内置并发实用程序,比如ExecutorService,从它们的一些方法返回一个java Future对象。在ExecutorService中,当提交一个Callable以便并发(异步)执行时,它返回一个Future。Future接口定义为了理解Future接口如何工作, 下面是接口的定原创 2020-08-01 09:50:18 · 217 阅读 · 0 评论 -
JAVA并发-Callable
Callable接口,java.util.concurrent.Callable,代表着可以通过另外的线程异步执行的任务,例如,可以将一个Callable对象提交到ExecutorService异步执行,我们之前讲过java创建启动线程,现在我们又多了一种Callable,我们先看下如果使用,然后再讲述:package com.ck.thread;import java.util.concurrent.Callable;import java.util.concurrent.Executio..原创 2020-07-31 11:17:34 · 471 阅读 · 0 评论 -
JAVA并发-ExecutorService
ExecutorService接口,java.util.concurrent.ExecutorService, 代表一种可以在后台并发执行的异步执行机制。在这篇ExecutorService文章中,将解释如何创建ExecutorService,怎么提交任务并执行,怎么获取这些任务的结果,怎么关闭 ExecutorService以及再次使用。任务委托下图说明了,线程将任务委托给ExecutorService异步执行: 线程将任务委托给ExecutorS...原创 2020-07-30 16:07:22 · 1069 阅读 · 0 评论 -
JAVA多线程-Semaphore
java.util.concurrent.Semaphore类是个计数信号量,也就意味着它有两个主要的方法:acquire() release()计数信号量初始化时候设置了一个给定的数字“permits(许可证)”看下构造函数:public Semaphore(int permits) { sync = new NonfairSync(permits);}public Semaphore(int permits, boolean fair) { ...原创 2020-07-29 11:07:49 · 328 阅读 · 0 评论 -
JAVA多线程-Exchanger
java.util.concurrent.Exchanger类代表了两个线程在一个集合点可以交互数据。下面描述了一下机制: 两个线程通过Exchanger 正在交换对象数据 交换对象数据是通过exchange()方法,下面是例子:Exchanger exchanger = new Exchanger();ExchangerRunnable exchangerRunnable1 = new ExchangerRunnable...翻译 2020-07-28 09:06:02 · 152 阅读 · 0 评论 -
JAVA多线程-CyclicBarrier
java.util.concurrent.CyclicBarrier是一个具有通过一些算法让多个线程保持同步的同步机制的类。也就是,这个一个所有线程必须等待的栅栏,所有线程都不能继续直到所有线程到达栅栏,下图说明了这个: 在CyclicBarriers 中,两个线程互相等待 在CyclicBarrier 中,所有线程调用了await()方法都会互相等待,直到N个线程都到达了CyclicBarrier ,那么所有线程就会得到释放并且继续往下运行。创建Cy..翻译 2020-07-27 10:47:12 · 190 阅读 · 0 评论 -
JAVA多线程-CountDownLatch
CountDownLatchjava.util.concurrent.CountDownLatch是一个并发构造允许一个或者多个线程等待给定的一组操作完成。CountDownLatch初始化时设置了一个给定的值,当调用countDown()方法时这个值会递减, 当这个只为0的时候将唤醒众多调用await()方法线程中的一个线程,调用await()方法的线程将一直阻塞直到count为0.下面是个简单的例子, 当Decrementer调用CountDownLatch的countDown(...翻译 2020-07-24 10:18:59 · 160 阅读 · 0 评论 -
JAVA多线程-ConcurrentNavigableMap
java.util.concurrent.ConcurrentNavigableMap接口是java.util.NavigableMap的一个子接口支持并发访问,也为其子map提供了并发访问。子map是可以通过多个方法返回的map例如,headMap(),subMap()和tailMap().这里只解释ConcurrentNavigableMap中新加的方法,其他的方法可以参考NavigableMap。headMap()headMap(T toKey)方法返回小于给定键的键的映射视...翻译 2020-07-23 11:21:11 · 2216 阅读 · 1 评论 -
JAVA多线程-ConcurrentMap
java.util.concurrent.ConcurrentMap代表着可以并发访问(存和取元素)的Map.ConcurrentMap在继承了java.util.Map父接口的基础上额外增加了一些原子方法。ConcurrentMap实现既然ConcurrentMap是个接口, 如果需要用它则需要实现这个接口。java.util.concurrent包含了ConcurrentMap的实现:ConcurrentHashMapConcurrentHashMapConcurrentH...翻译 2020-07-22 11:50:25 · 444 阅读 · 0 评论 -
JAVA多线程-LinkedBlockingDeque
LinkedBlockingDeque类实现了BlockingDeque接口. 可以阅读前面关于BlockingDeque接口更多的信息.Deque这个词来源于“双端队列”。因此,Deque可以在队列的两端插入和删除元素。LinkedBlockingDeque中如果是空,则不管线程试图从哪个端获取元素将会阻塞。下面是初始化和使用LinkedBlockingDeque:BlockingDeque<String> deque = new LinkedBlockingDeq...翻译 2020-07-21 10:11:51 · 209 阅读 · 0 评论 -
JAVA多线程-BlockingDeque
BlockingDeque接口是java.util.concurrent包中安全的放入和取实例的双向队列的代表。这篇文章介绍了BlockingDeque的用法. BlockingDeque类是一个Deque,当线程试图从Deque中插入或删除元素可能会阻塞。Deque是“双端队列”的缩写。因此,deque是一个两端都可以插入或者取元素的队列.BlockingDeque用法如果一个线程既要向队列中添加元素,又要从同一个队列中取元素,那么BlockingDeque将是非常有用的。如果消费者线程.翻译 2020-07-20 17:03:29 · 821 阅读 · 0 评论 -
JAVA多线程-SynchronousQueue
SynchronousQueue类实现了BlockingQueue接口,可以参考前面文章有关BlockingQueue接口的详解。SynchronousQueue是内部只能包含一个元素的队列,插入元素到队列的线程被阻塞,直到另一个线程从队列中获取了队列中存储的元素。同样,如果线程尝试获取元素并且当前不存在任何元素,则该线程将被阻塞,直到线程将元素插入队列。将这个类称为队列有点夸大其词。这更像是一个点。参考翻译:http://tutorials.jenkov.com/java-util-co...翻译 2020-07-14 21:39:14 · 179 阅读 · 0 评论 -
JAVA多线程-PriorityBlockingQueue
PriorityBlockingQueue类实现了BlockingQueue接口,可以参考前面文章有关BlockingQueue接口的详解。.PriorityBlockingQueue是无界的并发队列,它的排序规则和 java.util.PriorityQueue类一样 ,不能向改队列中插入null.所有加入到PriorityBlockingQueue中的元素必须实现java.lang.Comparable接口. 因此,元素排序取决于Comparable决定的优先级进行排序。注意,Pr...翻译 2020-07-13 21:28:54 · 212 阅读 · 0 评论 -
JAVA多线程-LinkedBlockingQueue
LinkedBlockingQueue类实现了BlockingQueue接口,可以参考前面文章有关BlockingQueue接口的详解。LinkedBlockingQueue内部用链表存储数据,如果需要,此链接结构可以选择有一个上限。如果不设置上限,最大值为Integer.MAX_VALUE。LinkedBlockingQueue和前面介绍的ArrayBlockingQueue一样内部存储元素是FIFO(先进先出)。队列的头部元素在队列中的时间最长,尾部的元素在队列中时间最短。下面是...翻译 2020-07-12 19:57:38 · 359 阅读 · 0 评论 -
JAVA多线程-ArrayBlockingQueue
ArrayBlockingQueue实现了BlockingQueue接口,可以参考上一篇文章有关BlockingQueue接口的详解。ArrayBlockingQueue是一个内部通过数组存储元素的有界,阻塞的队列。有界就意味着只能存储有限的元素,也就是说存储的元素是有上限的,在初始化的时候就要设置其上限,并且后面不能修改。ArrayBlockingQueue内部存储元素是FIFO(先进先出)。队列的头部元素在队列中的时间最长,尾部的元素在队列中时间最短。下面是如何初始化和使用ArrayBl..原创 2020-07-10 14:37:16 · 257 阅读 · 0 评论 -
JAVA多线程-BlockingQueue
BlockingQueue的用法 BlockingQueue 的实现类 BlockingQueue 列子Java的BlockingQueue接口,java.util.concurrent.BlockingQueue, 代表着一个队列可以安全的插入和取元素.换句话说,多线程通过BlockingQueue安全的插入或者取元素,不会有任何并发问题发生。BlockingQueue用法BlockingQueue典型的应用是一个生产者多个消费者,下面一张图描述了其原理: ...原创 2020-07-09 18:10:24 · 488 阅读 · 0 评论 -
JAVA多线程-DelayQueue
DelayQueue类实现了BlockingQueue, 可以参考前面文章有关BlockingQueue接口的详解。DelayQueue在内部阻塞元素,直到某个延迟过期。DelayQueue中的元素必须实现java.util.concurrent.Delayed接口,下面是Delayed接口:public interface Delayed extends Comparable<Delayed> {public long getDelay(TimeUnit timeUni..原创 2020-07-11 18:29:59 · 313 阅读 · 0 评论