一、并发集合java.util包下提供了很多的集合类,如ArrayList、TreeSet、HashMap,但是这些集合都是非线程安全的,并且对于单列集合的迭代器,采用的是快速失败机制,当正在迭代遍历的集合被其它线程修改时,便会抛出java.util.ConcurrentModificationException。这显然对于多线程操作的集合是十分不方便的,但早Colections这个工具类中有方法
分类:
编程语言 时间:
2018-01-22 13:03:58
阅读次数:
194
Java.util.concurrent.locks包提供了一个包含多种接口和类的框架,它针对条件进行加锁和等待。不同于对象的内置加锁同步以及java.lang.Object的等待/通知机制,包含锁框架的并发工具类通过轮询锁、显示等待及其它方式改善这种机制。锁框架包含了经常使用的锁、重入锁、条件、读写锁以及冲入读写锁等类别。一、锁Lock实现提供了比使用synchronized方法和语句可获得的更
分类:
编程语言 时间:
2018-01-21 19:02:54
阅读次数:
235
一、交换器????交换器提供了一个线程之间能够交换对象的同步点。每个线程都会往这个交换器的exchange()方法传入一些对象,匹配伙伴线程,同时接受伙伴对象作为返回值。java.util.conurrent.Exchange<V>实现了交换器。????下面是一个代码小实例:import?java
分类:
编程语言 时间:
2018-01-19 18:54:18
阅读次数:
209
Phaser是一个更加弹性的同步屏障。和同步屏障一样,一个phaser使得一组线程在屏障上等待,在最后一个线程到达之后,这些线程才得以继续执行。phaser也提供了和barrieraction等价的操作。????和同步屏障协同固定数目的线程不同,一个phaser能够协调不定数目的线程,这些线程可以在任何时候注册
分类:
编程语言 时间:
2018-01-19 18:51:00
阅读次数:
145
Java提供的synchronized关键字对临界区进行线程同步访问。由于基于synchronized很难正确编写同步代码,并发工具类提供了高级的同步器。倒计时门闩(countdown latch)、同步屏障(cyclic barrier)、交换器(exchanger)、信号量(semaphore)以及phaser同步器。下面主要介绍倒计时门闩。&n
分类:
编程语言 时间:
2018-01-17 01:16:02
阅读次数:
210
java5之前,我们使用诸如synchronized,wait(),notify()方法对线程的操作属于对底层线程的操作,这样会出现很多的问题:低级的并发原语,比如synchronized,wait(),notify()经常难以正确使用。误用会导致竞态条件,线程饿死,死锁等风险。泰国依赖synchronized会影响程序性能以及程序的可扩展性开发者经
分类:
编程语言 时间:
2018-01-17 01:13:16
阅读次数:
266
一、线程组这是Thread类的某些构造方法,可以看到有一个参数为ThreadGroup类,该类就是线程组,JDK中是这样描述的:线程组表示一个线程的集合。此外,线程组也可以包含其他线程组。线程组构成一棵树,在树中,除了初始线程组外,每个线程组都有一个父线程组。允许线程访问有关自己的线程组的信息,但是不允许它访问有关其线程组的父线程组或其他任何线程组的信息。使用ThreadGroup对象,你可以对线
分类:
编程语言 时间:
2018-01-16 18:25:43
阅读次数:
141
Java提供了一套API来支持线程之间的交互。在Object类中提供了一套等待通知的API wait() notify() notifyAll() 此处要注意的是,绝不
分类:
编程语言 时间:
2018-01-14 13:07:37
阅读次数:
155
上一节我们知道了java如何创建线程并启动,当线程之间没有交互,程序开发就十分简单了,但如果线程之间发生交互,通过共享变量的方式进行交互,就会引发很多线程不安全问题,如,竞态条件,数据竞争以及缓存变量。竞态条件:当计算的正确性取决于相对时间或者调度器所控制的多线程交叉时,竞态条件就会发生。如下例子:if(a==10.0){b=a/2.0;}假如一条线程已经执行完了if(a==10.0),突然被调度
分类:
编程语言 时间:
2018-01-13 19:00:32
阅读次数:
155
一、给出线程的定义 线程就是一条在程序代码中独立执行的路径二、给出runnable的定义 一个runnable就是一段封装在对象中的代码序列,它的类实现了runnable接口三、Thread类和runnable接口完成了什么? 类Thread提供了一个底层操作系
分类:
编程语言 时间:
2018-01-10 18:47:33
阅读次数:
228