java记录多线程次数_Java多线程的同步控制记录

Java多线程的同步控制记录一、重入锁重入锁完全可以代替 synchronized 关键字。在JDK 1.5 早期版本,重入锁的性能优于 synchronized。JDK 1.6 开始,对于 synchronized 做了大量优化,使得两者性能差距不大。代码示例:private static ReentrantLock lock = new ReentrantLock();@Overridepub...
摘要由CSDN通过智能技术生成

Java多线程的同步控制记录

一、重入锁

重入锁完全可以代替 synchronized 关键字。在JDK 1.5 早期版本,重入锁的性能优于 synchronized。JDK 1.6 开始,对于 synchronized 做了大量优化,使得两者性能差距不大。

代码示例:

private static ReentrantLock lock = new ReentrantLock();

@Override

public void run() {

lock.lock(); // 加锁

try {

// doSomething

} finally {

lock.unlock(); // 释放锁

}

}

PS:因为重入锁需要我们手动加锁/释放锁,比较好实现对于逻辑的控制。

注意事项:

加锁后记得释放锁,否则其他线程就没有机会访问(比如,临界区资源)。

一个线程多次获得锁(其实是同一把锁)。但加了多少次锁,就要释放多少次锁。同时,lock()方法会一直堵塞线程直到释放锁。

中断响应 : lockInterruptibly()方法是一个可以对中断进行响应的锁申请动作(在等待锁的过程中,可以响应中断)。

锁申请等待限时 : tryLock()方法给定一个等待时间,让线程自动放弃等待,避免死锁(PS:当前线程会尝试获得锁,如果锁未被其他线程占用,则申请成功返回true;否则返回false)。

公平锁:

通过ReentrantLock(true)的构

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值