JAVA并发应用程序的构件
一、原子类:java.util.concurrent.atomtic中有几个名字以Atomic打头的类。它们的语义基本上和volatile一样。
可以避免在共享数据上出现竞争危害的办法
如:AtomicLong和AtomicInteger
二、线程锁:java.util.concurrent.locks
块结构同步方式的几个缺点
锁只有一种类型
对被锁住对象的所有同步操作都是一样的作用
在同步代码块或方法开始时取得线程锁
在同步代码块或方法结束时释放线程锁
线程或者得到锁,或者阻塞
如果我们要重构对线程锁的支持
1、添加不同类型的锁,比如读取锁和写入锁
2、对锁的阻塞没有限制,即允许在一个方法中上锁,在另一个方法中解锁
3、如果线程得不到锁,比如锁由另一个线程持有,就允许该线程后退或继续执行,或者做其它事情,运用trylock
4、允许线程尝试取锁,并可以在超过等待时间后放弃
ReentrantLock:本质上跟用在同步块上的那种锁是一样的,但它要稍微灵活
ReentrantReadWriteLock:在需要读取很多线程而写入很小线程时,性能会好
本文介绍了JAVA并发编程中的两个核心构件:原子类和线程锁。原子类通过提供原子操作来避免共享数据的竞争条件;线程锁则通过更灵活的方式(如读写锁和尝试锁定)来提高程序的并发性能。
602

被折叠的 条评论
为什么被折叠?



