- 博客(6)
- 收藏
- 关注
原创 冒泡排序及其优化
什么是冒泡排序? 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。 这个是百度百科上比较官方的说法。用我们的白话来说就是,从头开始,依次比较两个相邻的元素,如果前一个元素...
2019-12-23 13:05:18 168
原创 阻塞队列——LinkedBlockingQueue
回顾上一篇中,我们讲述了基于数组实现的ArrayBlockingQueue,这一篇我们将学习另一种基于链表实现的LinkedBlockingQueue。 首先看看LinkedBlockingQueue一些重要属性 public class LinkedBlockingQueue<E> extends AbstractQueue<E> implement...
2019-12-05 16:53:25 158
原创 阻塞队列——ArrayBlockingQueue
ArrayBlockingQueue简介 ArrayBlockingQueue是一个基于数组实现的有界阻塞队列。通过一个lock锁,来控制插入和删除元素操作,从而达到线程安全。 public class ArrayBlockingQueue<E> extends AbstractQueue<E> implements BlockingQueue<...
2019-11-28 14:53:30 223
原创 Java并发编程——(二)
1.三个同步原语:synchronized、volatile、final 2.并发编程的两个需要解决的问题: *1.线程之间的通信。书中给的定义:线程之间以何种机制来交换信息 。 个人理解:说白了,就是一个共享变量,被多个线程 操作,相互之间能够知道。这也就是内存可见性。 *2.线程之间如何同步。控制线程间操作共享变量的顺序。 2.并发编程的两个...
2019-11-21 20:33:59 147
原创 Java并发编程——(一)
此文章为自己看书的后一些笔记,不具备学习价值,只能作为参考。如有异议,欢迎讨论,一起学习进步。 1.导致多线程并发数据不安全的原因: *1.线程操作一个共享变量,是在本地内存中。本地内存是每个线程私有的,多个线程之间不可见 *2.代码实际执行时,会经过编译器和处理器的指令重排序。由于编译器和处理器只会遵守单线程的数据依赖,对多线程或多个处理之间,是不遵守...
2019-11-21 20:33:37 92
原创 AQS详解
欢迎大家关注公众号——秃头让我们变强 AQS简介 编程不识Doug Lea,写尽Java也枉然。JUC包的作者,大名鼎鼎的Doug Lea,在JUC包中为我们留下了一个AbstranctQueuedSynchronizer类。希望它能满足一切并发编程开发者的同步需求。JUC包中的锁也基本都是基于AQS来实现的。AQS提供了一个volatile类型变量作为获取资源成功的标志,内部维护着一个FIF...
2019-11-21 20:29:26 294
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人