一:信号量的编程模型 1 package com.yeepay.sxf.test.atomic.test; 2 3 import java.util.concurrent.Semaphore; 4 5 /** 6 * 测试信号量 7 * 相当于有一把可以控制并发量的锁。 8 * 例如银行柜台,只有两 ...
分类:
编程语言 时间:
2016-09-25 14:30:31
阅读次数:
173
上一篇讲述了ThreadPoolExecutor的执行过程,我们也能看出来一个很明显的问题:这个线程池的构造函数比较复杂,对于不十分理解其运作原理的程序员,自己构造它可能体现和想象中不一样的行为。比如阻塞队列放什么,corePoolSize怎么设置等等。 所以和Math这种工具类一样,并发包也提供了 ...
分类:
编程语言 时间:
2016-09-06 09:03:53
阅读次数:
146
学习这个很长时间了一直没有去做个总结,现在大致总结一下并发包的线程池。 首先,任何代码都是解决问题的,线程池解决什么问题? 如果我们不用线程池,每次需要跑一个线程的时候自己new一个,会导致几个问题: 1,不好统一管理线程和它们的相互之间的依赖关系,尤其是有的程序要做的事情很多的时候,线程的处理就显 ...
分类:
编程语言 时间:
2016-09-05 12:23:23
阅读次数:
176
1.集合包 集合包最常用的有Collection和Map两个接口的实现类,Colleciton用于存放多个单对象,Map用于存放Key-Value形式的键值对。 Collection中最常用的又分为两种类型的接口:List和Set,两者最明显的差别为List支持放入重复的元素,而Set不支持。 Li ...
分类:
编程语言 时间:
2016-09-03 18:12:11
阅读次数:
320
一:HashMap >底层存储的是Entry<K,V>[]数组 >Entry<K,V>的结构是一个单向的链表static class Entry<K,V> implements Map.Entry<K,V> { final K key; V value; Entry<K,V> next; int h ...
分类:
编程语言 时间:
2016-08-27 19:28:29
阅读次数:
236
一:锁的原理结构 (1)锁对象内部维护了一个同步管理器的对象AbstractQueuedSynchronizer,AbstractOwnableSynchronizer (2)该对象其实是一个抽象类,具体的锁的管理器继承该抽象类 (3)该抽象类的关键属性有: >Thread exclusiveOwn ...
分类:
编程语言 时间:
2016-08-24 17:13:54
阅读次数:
199
最近在看Java并发包的源码,发现了神奇的Unsafe类,仔细研究了一下,在这里跟大家分享一下。 Unsafe类是在sun.misc包下,不属于Java标准。但是很多Java的基础类库,包括一些被广泛使用的高性能开发库都是基于Unsafe类开发的,比如Netty、Cassandra、Hadoop、K ...
分类:
编程语言 时间:
2016-08-22 21:19:53
阅读次数:
346
1.AbstractQueuedSynchronizer(以下简称AQS)是Java并发包提供的一个同步基础机制,是并发包中实现Lock和其他同步机制(如:Semaphore、CountDownLatch和FutureTask等)的基础。 2.AQS内部包含一个FIFO的同步等待队列,简单的说,没有 ...
分类:
其他好文 时间:
2016-08-21 15:18:19
阅读次数:
146
前言 在Java并发包中有这样一个包,java.util.concurrent.atomic,该包是对Java部分数据类型的原子封装,在原有数据类型的基础上,提供了原子性的操作方法,保证了线程安全。下面以AtomicInteger为例,来看一下是如何实现的。 以这两个方法为例,incrementAn ...
分类:
编程语言 时间:
2016-08-10 20:49:37
阅读次数:
161
一、为什么需要Executor?为了更好的控制多线程,JDK提供了一套线程框架Executor,帮助开发人员有效的进行线程控制。他们都在java.util.concurrent包中,是JDK并发包的核心。其中有一个比较重要的类:Executors,他扮演着线程工厂的角色,我们通过Executors可 ...
分类:
其他好文 时间:
2016-08-08 18:54:10
阅读次数:
196