【Java编程的逻辑】原子变量 & CAS & 显示锁

原子变量 在理解synchronized中有使用synchronized保证原子更新操作,但是使用synchronized成本太高了,需要先获取锁,最后还要释放锁,如果获取不到锁还需要等到。这些成本都是比较高的,对于这种情况,可以使用原子变量。 Java并发包中的基本原子变量类型有以下几种: ...

2018-04-27 15:49:37

阅读数 124

评论数 0

【Java编程思想】线程的基本协作机制 与 线程的中断

wait/notify Java在Object类中定义了一些线程协作的基本方法,wait和notify public final void wait() throws InterruptedException; public final native void wait(long ti...

2018-04-24 15:00:29

阅读数 195

评论数 1

【Java编程的思想】理解synchronized

用法和基本原理 synchronized可以用于修饰类的实例方法、静态方法和代码块 实例方法 在介绍并发基础知识的时候,有一部分是关于竞态条件的,当多个线程访问和操作同一个对象时,由于语句不是原子操作,所以得到了不正确的结果。这个地方就可以用synchronized进行处理 ...

2018-04-23 17:54:54

阅读数 138

评论数 1

【Java编程的逻辑】并发基础知识

线程的基本概念 线程表示一条单独的执行流,它有自己的程序执行计数器,有自己的栈。 在Java中创建线程有两种方式:一种是继承Thread,另外一种是实现Runnable接口 public class HelloThread extends Thread{ @Override...

2018-04-20 14:49:37

阅读数 167

评论数 1

归并排序【MergeSort】

归并排序 归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案”修补”在一起,即分而治之)。 首先...

2018-04-16 23:43:46

阅读数 49

评论数 0

选择排序 【SelectionSort】

选择排序 假设初始的数组是[5,4,7,2] 以从小到大排序为例,我们可以将数组分为两个区域,一个是无序区,一个是有序区,在一开始所有的数据都在无序区。 进行第一轮排序,对无序区的数组[5,4,7,2]进行遍历,记录最小值2,然后将它与第0个元素进行位置交换。此时无序数组[4,7,5],有序...

2018-04-16 23:43:14

阅读数 74

评论数 0

插入排序 【InsertionSort】

插入排序 插入排序的工作方式像排序一手扑克牌。 假设左手的牌是排序好的,桌面上的是未知的牌 1. 开始时,我们的左手为空并且桌子上的牌面向下。 2. 然后,我们每次从桌子上拿走一张牌并将它插入左手正确的位置。 为了找到插入的正确位置,我们将要插入的牌与左手的牌挨着比较,直接找到合适的位置并插...

2018-04-16 23:42:40

阅读数 69

评论数 0

冒泡排序【BubbleSort】

冒泡排序 假设初始的数组是[5,4,7,2] 以从小到大排序为例: 将第0个元素与第一个元素进行比较, 5 > 4, 所以交换位置, 此时[4,5,7,2] 将第1个元素与第二个元素进行比较, 5 < 7, 所以保持,此时[4,5,7,2] ...

2018-04-16 23:41:11

阅读数 73

评论数 0

【Java编程的逻辑】容器类的总结

抽象容器类 用法和特点 容器类有两个根接口,分别是Collection 和 Map ,Collection表示单个元素的集合,Map表示键值对的集合 。 Collection Collection表示的数据集合有基本的增、删、查、遍历等方法,但没有定义元素间的顺序或位置,也...

2018-04-16 12:03:12

阅读数 64

评论数 0

【Java编程的逻辑】堆与优先级队列&PriorityQueue

完全二叉树 & 满二叉树 & 堆 基本概念 满二叉树是指除了最后一层外,每个节点都有两个孩子,而最后一层都是叶子节点,都没有孩子。 满二叉树一定是完全二叉树,但完全二叉树不要求最后一层是满的,但如果不满,则要求所有节点必须集中在最左边...

2018-04-12 15:29:44

阅读数 94

评论数 0

【Java编程的逻辑】Map和Set

HashMap Map有键和值的概念。一个键映射到一个值,Map按照键存储和访问值,键不能重复。 HashMap实现了Map接口。 基本原理 HashMap的基本实现原理:内部有一个哈希表,即数组table,每个元素table[i]指向一个单向链表,根据键存取值,用键算出hash值,...

2018-04-09 13:34:43

阅读数 129

评论数 3

提示
确定要删除当前文章?
取消 删除
关闭
关闭