Java Threads 多线程10分钟参考手册

发表于:2011-10-17 09:55

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:ring0hx(CSDNblog)    来源:51Testing软件测试网采编

分享:

  5.2 非线程安全集合类

  ● java.util.BitSet
  ● java.util.HashSet (LinkedHashSet)
  ● java.util.TreeSet
  ● java.util.HashMap (WeekHashMap, TreeMap, LinkedHashMap, IdentityHashMap)
  ● java.util.ArrayList (LinkedList)
  ● java.util.PriorityQueue

  这些非线程安全的集合可以通过java.util.Collections.SynchronizedList、SynchronizedMap、SynchronizedSet等方法包装成线程安全的集合。包装器类简单地给被包装集合的各项操作加上了synchronized保护。值得注意的是在使用游标遍历这些包装器集合的时候必须加上额外的synchronized保护,否则会出现问题。

     List list = Collections.synchronizedList(new ArrayList());
         ...
     synchronized(list) {
         Iterator i = list.iterator(); // Must be in synchronized block
         while (i.hasNext())
             foo(i.next());
     }

  5.3 线程通知集合类

  ● java.util.concurrent.ArrayBlockingQueue
  ● java.util.concurrent.LinkedBlockingQueue
  ● java.util.concurrent.SynchronousQueue
  ● java.util.concurrent.PriorityBlockingQueue
  ● java.util.concurrent.DelayQueue

  这些集合类都实现了BlockingQueue接口。阻塞队列的特点是当从队列中取出元素时如果队列为空,线程会被阻塞直到队列中有元素被插入。当从队列中插入元素时如果队列已满,线程会被阻塞直到队列中有元素被取出出现空闲空间。阻塞队列可以用来实现生产者消费者模式(Producer/Consumer Pattern) 。

44/4<1234
精选软件测试好文,快来阅读吧~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号