连击 天
fork: star:
Semphore也可以用于实现生产者消费者队列,ArrayBlockingQueue也是使用ReentrantLock的2个condition,来判断empty和full,和下面用2个semaphore控制道理是差不多的,有兴趣可以看下ArrayBloc...
一个同事在看JDK 1.6 下AbstractCollection源码,讨论了几个问题,其中一个问题是toString,这里记录下
使用ReentrantReadWriteLock读读写锁,来实现一个阻塞队列,可以和之前的ReentrantLock的Condition比较
使用ReentrantLock和一对Condition实现一个阻塞队列,优势是使用lock可以对读写分别加锁,可以和之前Thread的wait和notify比较
使用Thread自带的wait和notify方法,实现一个阻塞队列,后续会给出基于juc包的实现
ConcurrentLinedQueue是一个基于链表的无界队列(其实是有界的,它的长度是int类型)。基于wait-free算法,适合多个线程读取的场景,出队和入队使用2把锁,性能比ArrayBlockingQueue快,当然...
ArrayBlockingQueue是一个基于数组的有界队列,提供阻塞特性,此队列按 FIFO(先进先出)原则对元素进行排序。队列的头部 是在队列中存在时间最长的元素。队列的尾部 是在队列中存在时间最短...
Semaphore初始化给的许可数,只是初始许可,不代表许可的最大值,每release一次,都会增加一次许可,做流控的时候,需要特别注意
JUC下的线程池一般是使用ExecutorService接口,该接口实现了Executor接口,用于执行同步或者异步的任务
FutureTask实现了Future接口,用于可取消的异步计算,计算尚未完成,则get方法一直阻塞,可使用FutureTask包装Callable或者Runnable对象,实现了Runnable可将FutureTask提交给Executor线程池...
AtomicInteger变量的很多操作,使用CAS实现,是具有完全的同步语义,适合做一些线程安全的控制
没有更多内容
加载失败,请刷新页面
文章删除后无法恢复,确定删除此文章吗?
动弹删除后,数据将无法恢复
评论删除后,数据将无法恢复