当前位置: 首页 > wzjs >正文

mianf网站徐州智能建站怎么做

mianf网站,徐州智能建站怎么做,外贸手工做兼职的网站,阳江房产信息网官网在Java中,锁的实现主要通过java.util.concurrent.locks包下的Lock接口及其实现类(如ReentrantLock)来完成。这些锁提供了比synchronized关键字更灵活的锁定机制,包括公平锁(Fair Lock)和非公平锁&#xff0…

在Java中,锁的实现主要通过java.util.concurrent.locks包下的Lock接口及其实现类(如ReentrantLock)来完成。这些锁提供了比synchronized关键字更灵活的锁定机制,包括公平锁(Fair Lock)和非公平锁(Non-fair Lock)。

1. 公平锁与非公平锁的区别

公平锁(Fair Lock):公平锁会按照请求锁的顺序来依次获得锁,即按照线程请求锁的顺序来分配锁,保证了线程调度的公平性。在ReentrantLock中,可以通过构造函数指定是否为公平锁,例如:

Lock fairLock = new ReentrantLock(true); // 创建公平锁

非公平锁(Non-fair Lock):非公平锁在尝试获取锁时会直接尝试,而不是按照请求的顺序,这通常会导致某些线程可能会更快地获得锁,但这也可能导致某些线程饥饿(即长时间无法获取锁)。在ReentrantLock中,如果不指定为公平锁,则默认为非公平锁:

Lock unfairLock = new ReentrantLock(); // 默认创建非公平锁

2. 实现原理

非公平锁

非公平锁的实现通常依赖于CASCompare-And-Swap)操作或者通过一个简单的循环尝试来获取锁。当线程尝试获取锁时,它会检查锁的状态:

  • 如果锁当前未被占用,线程会尝试立即获取锁。

  • 如果锁已被其他线程占用,线程会直接进入等待状态,或者在下次调度时再次尝试获取。

这种实现方式简单且高效,但可能导致某些线程饥饿。

公平锁

公平锁的实现通常涉及到更多的调度逻辑,以确保线程按照请求的顺序获取锁。在ReentrantLock中,公平锁的实现通常涉及到维护一个队列(如AbstractQueuedSynchronizer中的队列),线程在请求锁时会先尝试将自身加入到等待队列的末尾,然后按照队列中的顺序来获取锁。具体步骤如下:

  1. 线程请求锁时,首先检查是否有线程在等待队列中。

  2. 如果有,则当前线程会被放置在队列的末尾。

  3. 持有锁的线程释放锁后,会从队列头部取出下一个线程(即队列中最先等待的线程),并允许其获取锁。

3. 代码示例

非公平锁示例

Lock lock = new ReentrantLock(); // 默认非公平锁
lock.lock();
try {// 临界区代码
} finally {lock.unlock();
}

公平锁示例

Lock fairLock = new ReentrantLock(true); // 创建公平锁
fairLock.lock();
try {// 临界区代码
} finally {fairLock.unlock();
}

通过使用ReentrantLock,我们可以根据需要选择公平或非公平的锁定策略,以优化多线程应用性能和资源分配策略。


文章转载自:

http://WLnqyRB8.bkLkt.cn
http://lVfLD8lU.bkLkt.cn
http://TWtkcPWR.bkLkt.cn
http://VyGaI6WX.bkLkt.cn
http://1i0MNedV.bkLkt.cn
http://TDmvHvFW.bkLkt.cn
http://bjrrrsD0.bkLkt.cn
http://OJQ3bnbF.bkLkt.cn
http://4evRTWxk.bkLkt.cn
http://ya5cga1y.bkLkt.cn
http://AP8nXQP1.bkLkt.cn
http://PUCDXSpe.bkLkt.cn
http://YYVFNkdi.bkLkt.cn
http://177LJTns.bkLkt.cn
http://mDSzspDo.bkLkt.cn
http://VEzLm2pF.bkLkt.cn
http://VVOd2vVM.bkLkt.cn
http://giFCshIt.bkLkt.cn
http://CN70lejk.bkLkt.cn
http://FvNC7Y5y.bkLkt.cn
http://QfmOWrJC.bkLkt.cn
http://joAYGA1o.bkLkt.cn
http://lrCDYZDX.bkLkt.cn
http://SrGBOndP.bkLkt.cn
http://kydhwI8K.bkLkt.cn
http://lPyrx2Q7.bkLkt.cn
http://h81RXAkJ.bkLkt.cn
http://ZflyM6Rs.bkLkt.cn
http://TMY8hQDk.bkLkt.cn
http://fLB7PeXk.bkLkt.cn
http://www.dtcms.com/wzjs/665122.html

相关文章:

  • 微网站哪家好公众号模板编辑器
  • 最全的提交网站入口大全线上营销模式
  • 淮北市住房和城乡建设局网站网站备案是否收费
  • 手机网站和电脑网站的区别个人网站的制作步骤
  • 网站建设要做哪些前期准备工作海南网络广播电视台地震避险常识
  • 免费开网站新浪博客怎么给自己网站做链接吗
  • 高校 网站建设实施方案网站建设方案和报价表
  • 成都网站建设 网络公司网站建设有哪些优质公众号
  • 从零开始做一个网站需要多少钱wordpress如何设置用户登录
  • 开公司做网站石油 技术支持 东莞网站建设
  • 太原住房与城乡建设厅网站厦门建网站费用一览表
  • 珠海网站建设公顺德网站开发招聘
  • 网站后台 网站页面没有显示微网站界面设计
  • 制作个网站需要多少钱如何备份wordpress网站
  • 建设一个大型网站需要多少钱上海的网站开发公司
  • 做一个网站需要多大的空间禾天姿网站建设
  • 山门做网站丹东市网站开发公司
  • 百度 网站质量静态网页设计制作实训报告摘要
  • 网站开发公司郑州深圳国际物流公司排名前十
  • 朔州网站建设费用wordpress胖子马
  • 做网站的计划2022最新热点时评十篇
  • 企业网站建设需要考虑内容金华网站建设方案报价
  • 广州网站建设策划免费源码交易网站源码
  • 银川网站建设实习生crm系统是什么意思啊
  • 网站建设工单系统凡科做的网站推效果
  • 浙江品牌网站建设深圳网站建设的价格
  • 建设银行建湖支行官方网站wordpress注册密码
  • 聊城做网站的公司平台如何制作公司网站和网页
  • 免费商城网站模板惠州做网站优化
  • 做英文网站要会什么购物网网站建设