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

本文介绍了JAVA并发编程中的两个核心构件:原子类和线程锁。原子类通过提供原子操作来避免共享数据的竞争条件;线程锁则通过更灵活的方式(如读写锁和尝试锁定)来提高程序的并发性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 JAVA并发应用程序的构件

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

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

如:AtomicLong和AtomicInteger

 

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

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

锁只有一种类型

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

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

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

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

 

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

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

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

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

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

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

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

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值