• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
 






五色风车

 
 

Powered by 博客园
博客园 | 首页 | 新随笔 | 联系 | 订阅 订阅 | 管理

2020年1月18日

阻塞队列BlockingQueue之LinkedBlokingQueue
摘要: 1、简介 LinkedBlokingQueue 是链表实现的有界阻塞队列,此队列的默认和最大长度为 Integer.MAX_VALUE。此队列按照先进先出的原则对元素进行排序。ArrayList和ArrayBlockingQueue一样,内部基于数组来存放元素,而LinkedBlockingQueu 阅读全文
posted @ 2020-01-18 21:56 五色风车 阅读(429) 评论(0) 推荐(0)
 
阻塞队列BlockingQueue之ASynchronousQueue
摘要: 一、SynchronousQueue简介 Java 6的并发编程包中的SynchronousQueue是一个没有数据缓冲的BlockingQueue,生产者线程对其的插入操作put必须等待消费者的移除操作take,反过来也一样。 不像ArrayBlockingQueue或LinkedListBloc 阅读全文
posted @ 2020-01-18 21:09 五色风车 阅读(237) 评论(0) 推荐(0)
 
阻塞队列BlockingQueue之ArrayBlockingQueue
摘要: ArrayBlockingQueue 是数组实现的有界阻塞队列,此队列按照先进先出(FIFO)的原则对元素进行排序。 构造方法: public ArrayBlockingQueue(int capacity) { this(capacity, false); } public ArrayBlocki 阅读全文
posted @ 2020-01-18 18:21 五色风车 阅读(189) 评论(0) 推荐(0)
 
阻塞队列BlockingQueue
摘要: 阻塞队列BlockingQueue是一个接口,基于ReentrantLock ,依据它的基本原理,我们可以实现Web中二段长连接聊天功能,当然其最常用的还是用于实现生产者和消费者模式: BlockingQueue接口提供了以下方法: package java.util.concurrent; imp 阅读全文
posted @ 2020-01-18 17:49 五色风车 阅读(170) 评论(0) 推荐(0)
 
并发之ATOMIC原子操作--Unsafe解析(三)
摘要: Atomic 类的原子操作是依赖java中的魔法类sun.misc.Unsafe来实现的,而这个类为我们提供了访问底层的机制,这种机制仅供java核心类库使用,而不应该被普通用户使用。 获取Unsafe的实例 查看Unsafe的源码我们会发现它提供了一个getUnsafe()的静态方法。 @Call 阅读全文
posted @ 2020-01-18 14:55 五色风车 阅读(324) 评论(0) 推荐(0)
 
并发之ATOMIC原子操作--CAS乐观锁原理(二)
摘要: 1.乐观锁介绍 程序完成并发操作时,访问数据时每次不加锁,假设没有冲突去完成某项操作,如果因为冲突失败就重试,直到成功为止。就是当去做某个修改或其他操作的时候它认为不会有其他线程来做同样的操作(竞争),这是一种乐观的态度,通常是基于CAS 原子指令来实现的。 2.CAS介绍 当多个线程尝试使用CAS 阅读全文
posted @ 2020-01-18 14:18 五色风车 阅读(383) 评论(0) 推荐(0)
 
并发之atomic原子操作(一)
摘要: Atomic类 Atomic类是一个简单的高效的、线程安全的递增递减方案,在多线程或者并发环境中,我们常常会遇到这种情况 int i=0; i++ 稍有经验的同学都知道这种写法是线程不安全的。为了达到线程安全的目的,我们通常会用synchronized来修饰对应的代码块。现在我们有了新的方法,就是使 阅读全文
posted @ 2020-01-18 11:00 五色风车 阅读(922) 评论(0) 推荐(0)
 
并发编程之CyclicBarrier
摘要: 栅栏类似于闭锁,它能阻塞一组线程直到某个事件的发生。栅栏与闭锁的关键区别在于,所有的线程必须同时到达栅栏位置,才能继续执行。闭锁用于等待事件,而栅栏用于等待其他线程。 CyclicBarrier可以使一定数量的线程反复地在栅栏位置处汇集。当线程到达栅栏位置时将调用await方法,这个方法将阻塞直到所 阅读全文
posted @ 2020-01-18 10:18 五色风车 阅读(198) 评论(0) 推荐(0)