并发工具

java并发编程——并发容器和并发工具介绍

喜你入骨 提交于 2019-11-29 19:35:01
java.util.concurrent包下面为我们提供了丰富的类和接口供我们开发出支持高并发、线程安全的程序。下面将从三个方面对这些基础构建类做以介绍和总结。 同步容器类,介绍Vector,HashTable和Collections.SynchronizedXXX(); 并发容器类,介绍ConcurrentHashMap,CopyOnWrite容器以及阻塞队列。 并发工具类,介绍CountLatch,FututeTask,Semaphore和CyclicBarrier。 第一部分:同步容器类 同步容器类包括:Vector和HashTable,这两个类是早期JDK的一部分。此外还包括了JDK1.2之后提供的同步封装器方法Collections.synchronizedXxx()。 同步容器类的问题 我们都知道Vector是线程安全的容器,但当我们对Vector经行复合操作时往往会得到意想之外的结果。比如迭代操作: for(int i=0;i<vector.size();i++){ doSomething(vector.get(i)); } 例如两个线程A和B,A线程对容器进行迭代操作的时候B线程可能对容器进行了删除操作,这样就会导致A线程的迭代操作抛出IndexOutOfBoundsException。而这显然不是我们想得到的结果,所以,为了解决不可靠迭代的问题