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

app网站开发成功案例免费发布出租房信息网站

app网站开发成功案例,免费发布出租房信息网站,域名注册成功怎么做网站,万网虚拟主机建网站转载自 一分钟理解Java公平锁与非公平锁 和朋友聊天他提到#xff1a;ReentrantLock 的构造函数可以传递一个 bool 数据#xff0c;true 时构造的是“公平锁”、false 时构造的是“非公平锁”。我的印象中锁是不区分类型的#xff0c;所以认为这应该是 Java 发明的概念ReentrantLock 的构造函数可以传递一个 bool 数据true 时构造的是“公平锁”、false 时构造的是“非公平锁”。我的印象中锁是不区分类型的所以认为这应该是 Java 发明的概念于是就恶补了一下。 锁的底层实现 无论什么语言在操作系统层面锁的操作都会变成系统调用System Call以 Linux 为例就是 futex 函数可以把它理解为两个函数 futex_wait(s)对变量 s 加锁futex_wake(s)释放 s 上的锁唤醒其他线程。 如果你熟悉操作系统原理其实就是 P/V 操作 Java 公平锁和非公平锁 公平锁的 lock 操作是调用futex_waitunlock 操作是调用futex_wake。比如下面的代码 非公平锁的 lock/unlock 操作会先做一次 CAS 操作然后再调用 futex_wait、futex_wake。比如下面的代码 在上锁之前增加了一个 CAS 原子操作它接受三个变量可以把它理解为下面的逻辑 第一个参数的值和第二个参数不相等则返回 0 表示操作失败否则更新为新的值。这个函数不是由代码实现的而是 CPU 提供的一个指令比如 Intel 的叫 cmpxchg高级语言进行了封装比如 Java 的 Atomic 变量。 为什么 明白了原理再来提问为什么在上锁之前先通过 CAS 修改一个变量表示“我要上锁”了看似很冗余的操作其实它是一次自旋如果资源很快被使用完可以提高系统的吞吐率。考虑下面的场景 上锁之前的时间是 t1上锁之后是 t2使用资源释放锁是 t3。现在有两个线程处于 t1 状态其中 A 线程先抢到资源处于 t2 B 线程也会尝试 lock与此同时 t2 释放了而 lock 动作也执行成功了 B 被挂起系统继续执行 A 释放成功唤醒 B 继续执行。上述过程中 B 只要再多等待“一丢丢”就不用被挂起直接获得资源继续执行。非公平锁的 CAS 操作就是为了增加一丢丢时间。 采用非公平锁如果系统中有 3 个线程执行A 抢到资源C 没有抢到处于挂起状态此时 B 尝试 CAS 操作而 A 刚好释放掉资源还没有来得及唤醒 C那么 B 会先抢到资源在 C 之前执行。这就是“非公平”的来历虽然 C 老老实实的等待了很长时间但是 B 的“时机”把握的好迅速“插队”完成资源抢占。 总结 上锁的过程本身也是有时间开销的如果操作资源的时间比上锁的时间还短建议使用非公平锁可以提高系统的吞吐率否则就老老实实的用公平锁。
http://wiki.neutronadmin.com/news/147340/

相关文章:

  • 上海基础微网站开发wordpress 加视频教程
  • 做网站登录的需求分析一起做网站怎么下单
  • php仿博客园网站营销方案格式
  • 关键词网站查询网站开发需要的技术
  • dede网站重新安装做视频网站需要什么软件
  • 中国建设网站首页wordpress 3.5
  • 昆明网络推广昆明网站建设昆明昆明短视频代运营费用明细
  • 大连公司网站开发龙岩相亲网
  • 杭州cms模板建站网站建设图片编辑
  • 东莞路桥投资建设公司待遇北京网站优化团队
  • 网站建设对应的岗位北京网
  • 开网站做商城怎么样网站管理维护怎么做
  • 合肥php网站开发软件开发流程详解
  • 西宁做网站君博领先云服务器
  • 网站性能容量的收集与分析怎么做企业网站建设目的意义
  • 企业网站的制作电梯网站建设
  • 网站建设网上学wordpress文章分类权限
  • 如何评价一个企业的网站建设上海seo网络优化
  • 网站建设需要多少人手机网站推荐哪个好
  • 高端定制站开发昂昂溪网站建设
  • 自己动手建立网站3给网站做seo诊断
  • 网站开发需求问卷天河外贸网站建设
  • 做网站欢迎页什么意思php在线购物网站建设
  • 我需要一个网站wordpress调用ja
  • 福州网站建设制作品牌企业郑州网站优化汉狮网络
  • 做婚介网站可行性报告模板如何维护自己公司网站
  • 网站建设都包含哪些内容学做川菜网站
  • 艾特思成都网站建设绿色网站模版
  • 绥阳网站建设大门户网站
  • 成都网站开发建设it黄页