??
在一些应用场合中,某段程序需要等待某个条件达到要求后才能执行,或者等待一定长的时间后此行,从jdk1.5开始就可以使用CountDownLatch实现,
CountDownLatch类是一个同步倒数计数器,构造时传入int参数,该参数就是计数器的初始值,每调用一次countDown()方法,计数器减1,计数器大于0 时,await()方法会阻塞后面程序执行,直到计...
分类:
编程语言 时间:
2015-04-29 17:13:19
阅读次数:
134
??
Exchanger 可以在对中对元素进行配对和交换的线程的同步点。每个线程将条目上的某个方法呈现给
exchange 方法,与伙伴线程进行匹配,并且在返回时接收其伙伴的对象。Exchanger 可能被视为
SynchronousQueue 的双向形式。Exchanger 可能在应用程序(比如遗传算法和管道设计)中很有用。
模拟用于实现两个之间的数...
分类:
编程语言 时间:
2015-04-29 17:10:48
阅读次数:
192
class Sync {
private byte[] lock = new byte[0];
public void sync() throws InterruptedException {
synchronized (lock) {
runThread();
}
}
public void thi...
分类:
编程语言 时间:
2015-04-09 15:35:31
阅读次数:
235
以下是java6中文API对Exchanger的解释:
可以在对中对元素进行配对和交换的线程的同步点。每个线程将条目上的某个方法呈现给 exchange 方法,与伙伴线程进行匹配,并且在返回时接收其伙伴的对象。Exchanger 可能被视为 SynchronousQueue 的双向形式。Exchanger 可能在应用程序(比如遗传算法和管道设计)中很有用。
用法示例:以下是重点介绍的一个类,...
分类:
编程语言 时间:
2015-04-01 15:34:06
阅读次数:
372
集合类是Java API的核心,但是我觉得要用好它们是一种艺术。我总结了一些个人的经验,譬如使用ArrayList能够提高性能,而不再需要过时的Vector了,等等。JDK 1.5引入了一些好用的并发集合类,它们对于大型的、要求低延迟的电子商务系统来说非常的有用。这篇文章中将会看看ConcurrentHashMap和Hashtable之间的区别。
这篇文章是HashMap的工作原理以及HashM...
分类:
其他好文 时间:
2015-03-30 11:25:00
阅读次数:
121
当你使用synchronized关键字的时候,是通过互斥器来保障线程安全以及对共享资源的同步访问。线程间也经常需要更进一步的协调执行,来完成复杂的并发任务,比如wait/notify模式就是一种在多线程环境下的协调执行机制。
通过API来获取和释放锁(使用互斥器)或者调用wait/notify等方法都是底层调用的方式。进一步来说,有必要为线程同步创建更高层次的抽象。通常用到的同步辅助类,就是对2...
分类:
编程语言 时间:
2015-03-30 09:27:09
阅读次数:
215
深入理解java同步、锁机制我们主要讲解了关于synchronized的实现和各种锁的类型,本节将尝试从源码的角度去理解可重入锁ReentrantLock的实现。由于个人水平有限,文中出现错误的地方还请指出,避免误导更多人。
要理解ReentrantLock需要先理解所有锁的基础。AQS(AbstractQueuedSynchronizer)主要利用硬件原语指令(CAS compare-and-...
分类:
其他好文 时间:
2015-03-13 22:22:24
阅读次数:
184
本片文章尝试从另一个层面来了解我们常见的同步(synchronized)和锁(lock)机制。如果读者想深入了解并发方面的知识推荐一本书《java并发编程实战》,非常经典的一本书,英语水平好的同学也可以读一读《Concurrent programming in Java - design principles and patterns》由Doug Lea亲自操刀,Doug Lea是并发方面的大神,...
分类:
编程语言 时间:
2015-03-12 22:41:57
阅读次数:
1093
任何线程进入同步代码块、同步方法之前,必须获得同步监视器的锁定,那么何时会释放这个锁定呢?在程序中,是无法显式释放对同步监视器的锁的,而会在如下几个情况下释放锁。
1、当前线程的同步方法、代码块执行结束的时候释放
2、当前线程在同步方法、同步代码块中遇到break 、 return 终于该代码块或者方法的时候释放。
3、。。。。出现未处理的error或者exception导致异常结束的时候释...
分类:
编程语言 时间:
2015-01-31 12:18:18
阅读次数:
257
今天在学习java原子类的时候,遇到了这篇博客,看到了同步代码块和同步方法的区别,之前没有意识到,这里记录下。
public class CP {
private int i = 0;
public synchronized int synchronizedMethodGet() {
return i;
}
public int synchronizedBlockGet() {...
分类:
编程语言 时间:
2015-01-20 17:58:16
阅读次数:
210