1、阻塞队列 BlockingQueue是线程安全的Queue版本,从它的名字就可以看出,它是一个支持阻塞的Queue实现:当向空BlockingQueue请求数据时,它会阻塞至BlockingQueue非空;当向一个已满BlockingQueue插入数据时,线程会阻塞至BlockingQueu.....
分类:
编程语言 时间:
2014-10-12 18:50:48
阅读次数:
302
在第一部分,我们介绍了如果通过同步来避免多个线程在同一时刻访问相同的数据,而这节,我们将介绍如何共享和发布对象,从而使他们能够安全的由多个线程同时访问。这两部分形成了构建线程安全类以及通过 java.util.concurrent 类库来构建并发应用程序的重要基础。...
分类:
编程语言 时间:
2014-10-12 13:14:28
阅读次数:
209
在研究AQS框架时,会发现这个类很多地方都使用了CAS操作,在并发实现中CAS操作必须具备原子性,而且是硬件级别的原子性,java被隔离在硬件之上,明显力不从心,这时为了能直接操作操作系统层面,肯定要通过用C++编写的native本地方法来扩展实现。JDK提供了一个类来满足CAS的要求,sun.misc.Unsafe,从名字上可以大概知道它用于执行低级别、不安全的操作,AQS就是使用此类完成硬件级...
分类:
编程语言 时间:
2014-10-11 22:52:56
阅读次数:
321
首先我们要弄清楚什么叫线程安全。
“线程安全”是指:当多个线程访问某个类时,不管运行环境采用何种调度方式或者这些线程如何交替执行,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为,那么就称这个类是线程安全的。...
分类:
编程语言 时间:
2014-10-11 12:33:45
阅读次数:
287
这个例子来自《Java并发编程实战》第五章。本文将开发一个高效且可伸缩的缓存,文章首先从最简单的HashMap开始构建,然后分析它的并发缺陷,并一步一步修复。hashMap版本 首先我们定义一个Computable接口,该接口包含一个compute()方法,该方法是一个耗时很久的数值计算方...
分类:
编程语言 时间:
2014-10-11 01:59:14
阅读次数:
267
本文是学习网络上的文章时的总结,感谢大家无私的分享。
JDK 1.7 添加了一个新的工具Phaser,Phaser的在功能上与CountDownLatch有部分重合。
下面使用Phaser类来同步3个并发任务。这3个任务会在3个不同的文件夹和它们的子文件夹中搜索扩展名是.log的文件。这个任务被分成3个步骤:
1. 在指定的文件夹和子文件夹中获得文件扩展名为.log的文件列表。
...
分类:
编程语言 时间:
2014-10-09 20:15:57
阅读次数:
315
1、什么是线程安全性 当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些进程将如何交替执行,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为,那么就称这个类是线程安全的。 在线程安全类中封装了必要的同步机制,因此客户端无需进一步采取同步错失。2、原子性 ...
分类:
编程语言 时间:
2014-10-09 13:07:14
阅读次数:
427
本文是Oracle官方的Java并发相关的教程,感谢并发编程网的翻译和投递。(关注ITeye官微,随时随地查看最新开发资讯、技术文章。)计算机的使用者一直以为他们的计算机可以同时做很多事情。他们认为当其他的应用程序在下载文件,管理打印队列或者缓冲音频的时候他们可以继续在文字处理程序上工作。甚至对于单...
分类:
数据库 时间:
2014-10-09 01:20:08
阅读次数:
327
上文讲解了Java线程的创建、启动以及停止,在讲到停止线程时说到了Java中断,Java中断是停止线程的一种协作机制,本文打算对Java中断机制进行详细讲解。 在网上搜索Java中断机制,发现两篇好文章,分别如下:Java 理论与实践: 处理 InterruptedException以及详细分...
分类:
编程语言 时间:
2014-10-07 00:16:22
阅读次数:
310
0、介绍 在计算机世界,当人们谈到并发时,它的意思是一系列的任务在计算机中同时执行。如果计算机有多个处理器或者多核处理器,那么这个同时性是真实发生的;如果计算机只有一个核心处理器那么就只是表面现象。 现代所有的操作系统都允许并发地执行任务。你可以在听音乐和浏览网页新闻的同时阅读邮件,我们说这种并.....
分类:
编程语言 时间:
2014-10-06 10:54:20
阅读次数:
436