首页 > 代码库 > reentrantlock与synchronized的区别.及Atomics的使用
reentrantlock与synchronized的区别.及Atomics的使用
ReentranLock是java.util.concurrent.locks中的一个类.需要显示的进行unclock
提供了tryLock方法,锁被其他线程持有返回false,否则当前线程会持有锁,并返回true
可以通过构造函数声明一个公平锁,效率较非公平锁低,按队列顺序获取锁
提供了ReentrantReadWriteLock,用于读多写少并且读不需要互斥的场景,比互斥锁效率高很多
ReentranLock的使用:
lock.lock();
try{
//do something
}finally{
lock.unclock;
}
ReentrantReadWriteLock锁的使用:
lock.writeLock().lock();//lock.readLock().lock();
try{
//do something
}finally{
lock.writeLock().unlock();//lock.readLock().unlock();
}
Atomic
jdk5增加了java.util.concurrent.atomic包,包含以Atomic开头的类,提供一些原子操作
多线程计算器一般解决办法
public class Demo5 { private int count=0; public int increase(){ synchronized(this){ count+=1; return count; } } public int decrease(){ synchronized(this){ count-=1; return count; } } }
采用AtomicInteger后
public class Demo5 { private AtomicInteger count=new AtomicInteger(); public int increase(){ return count.incrementAndGet(); } public int decrease(){ return count.decrementAndGet(); } }
reentrantlock与synchronized的区别.及Atomics的使用
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。