JAVA并发应用程序的构件(一)

 JAVA并发应用程序的构件

一、原子类:java.util.concurrent.atomtic中有几个名字以Atomic打头的类。它们的语义基本上和volatile一样。

可以避免在共享数据上出现竞争危害的办法

如:AtomicLong和AtomicInteger

二、线程锁:java.util.concurrent.locks

块结构同步方式的几个缺点

锁只有一种类型

对被锁住对象的所有同步操作都是一样的作用

在同步代码块或方法开始时取得线程锁

在同步代码块或方法结束时释放线程锁

线程或者得到锁,或者阻塞

如果我们要重构对线程锁的支持

1、添加不同类型的锁,比如读取锁和写入锁

2、对锁的阻塞没有限制,即允许在一个方法中上锁,在另一个方法中解锁

3、如果线程得不到锁,比如锁由另一个线程持有,就允许该线程后退或继续执行,或者做其它事情,运用trylock

4、允许线程尝试取锁,并可以在超过等待时间后放弃

ReentrantLock:本质上跟用在同步块上的那种锁是一样的,但它要稍微灵活

ReentrantReadWriteLock:在需要读取很多线程而写入很小线程时,性能会好

 

猜你喜欢

转载自kayak2015.iteye.com/blog/2256687