ArrayList
基于数组实现,本质上是对象引用的一个变长数组,能够动态的增加或减小其大小。
不是线程安全的,只能用在单线程环境下。多线程环境下可以考虑用Collection.synchronizedList(List l)函数返回一个线程安全的ArrayList类,也可以使用concurrent并发包下的
CopyOnWriteArrayList类
下面直接贴ArrayList的Jav...
分类:
编程语言 时间:
2015-05-20 22:23:49
阅读次数:
209
JAVA并发包中有三个类用于同步一批线程的行为,分别是CountDownLatch、Semaphore和CyclicBarrier。CountDownLatchCountDownLatch是一个计数器闭锁,主要的功能就是通过await()方法来阻塞住当前线程,然后等待计数器减少到0了,再唤起这些线程...
分类:
编程语言 时间:
2015-05-09 10:12:38
阅读次数:
119
http://jameswxx.iteye.com/blog/806968最近想将java基础的一些东西都整理整理,写下来,这是对知识的总结,也是一种乐趣。已经拟好了提纲,大概分为这几个主题: java线程安全,java垃圾收集,java并发包详细介绍,java profile和jvm性能调优 。慢...
分类:
编程语言 时间:
2015-04-30 14:00:45
阅读次数:
162
Java中使用线程池技术一般都是使用Executors这个工厂类,它提供了非常简单方法来创建各种类型的线程池:public static ExecutorService newFixedThreadPool(int nThreads)public static ExecutorService new...
分类:
编程语言 时间:
2015-04-18 22:01:45
阅读次数:
203
上一篇讲述了并发包下的Lock,Lock可以更好的解决线程同步问题,使之更面向对象,并且ReadWriteLock在处理同步时更强大,那么同样,线程间仅仅互斥是不够的,还需要通信,本篇的内容是基于上篇之上,使用Lock如何处理线程通信。 那么引入本篇的主角,Condition,Condition.....
分类:
编程语言 时间:
2015-03-28 11:29:21
阅读次数:
155
前言 在Java并发包中有这样一个包,java.util.concurrent.atomic,该包是对Java部分数据类型的原子封装,在原有数据类型的基础上,提供了原子性的操作方法,保证了线程安全。下面以AtomicInteger为例,来看一下是如何实现的。public final int in.....
分类:
编程语言 时间:
2015-03-28 11:28:14
阅读次数:
181
接着上一篇继续并发包的学习,本篇说明的是Callable和Future,它俩很有意思的,一个产生结果,一个拿到结果。 Callable接口类似于Runnable,从名字就可以看出来了,但是Runnable不会返回结果,并且无法抛出返回结果的异常,而Callable功能更强大一些,被线程执...
分类:
编程语言 时间:
2015-03-27 23:52:10
阅读次数:
175
自JDK5之后,Java推出了一个并发包,java.util.concurrent,在Java开发中,我们接触到了好多池的技术,String类的对象池、Integer的共享池、连接数据库的连接池、Struts1.3的对象池等等,池的最终目的都是节约资源,以更小的开销做更多的事情,从而提高性能。 .....
分类:
编程语言 时间:
2015-03-27 23:48:55
阅读次数:
355
上一篇文章提到AQS是基于CLH lock queue,那么什么是CLH lock queue,说复杂很复杂说简单也简单, 所谓大道至简:CLH lock queue其实就是一个FIFO的队列,队列中的每个结点(线程)只要等待其前继释放锁就可以了。AbstractQueuedSynchronizer...
分类:
编程语言 时间:
2015-03-11 22:51:46
阅读次数:
191
AQS其实就是java.util.concurrent.locks.AbstractQueuedSynchronizer这个类。 阅读Java的并发包源码你会发现这个类是整个java.util.concurrent的核心之一,也可以说是阅读整个并发包源码的一个突破口。比如读ReentrantLock...
分类:
编程语言 时间:
2015-03-10 21:21:01
阅读次数:
295