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

乐清英文网站建设百度网站收录更新

乐清英文网站建设,百度网站收录更新,简约大方的网站,国内seo公司哪家最好Java核心篇之Java锁–day2 乐观锁#xff1a;乐观锁是一种乐观思想#xff0c;即认为读多写少#xff0c;每次去取数据的时候都认为其他人不会修改#xff0c;所以不会上锁#xff1b;但是在更新的时候会判断一下在此期间别人有没有去修改它#xff0c;如果有人修改的话…Java核心篇之Java锁–day2 乐观锁乐观锁是一种乐观思想即认为读多写少每次去取数据的时候都认为其他人不会修改所以不会上锁但是在更新的时候会判断一下在此期间别人有没有去修改它如果有人修改的话就需要重新尝试。实现的方式主要有以下两种 1 版本号机制一般是在数据表中加上一个数据版本号的version字段表示数据被修改的次数当数据被修改时版本号就会1在提交更新时若刚才读取到的version值与当前数据库中version的值相等时才进行更新否则重试更新操作直到更新成功。 2CAScompare and swap CAS涉及到三个操作数 V需要读写的内存值 A进行比较的值 B拟写入的新值 当且仅当VA时CAS通过原子方式用新值B来代替V否则不会执行任何操作比较和替换是一个原子操作一般情况是自旋操作 乐观锁缺点ABA问题循环时间长开销大 悲观锁是一种悲观思想即认为写多读少每次去取数据的时候都认为别人会修改所以每次读数据的时候都会加锁这样别人想拿到这个数据的话就会一直block直至拿到锁。Java的悲观锁synchronized。 自旋锁如果持有锁的线程能在很短时间内释放资源那么等待竞争锁的线程就不需要进入阻塞挂起状态他们只需要等一等自旋等持有锁的线程释放锁后即可立即获取到锁这样能够避免用户上下文切换所带来的消耗。 synchronized同步锁它属于悲观锁同时也属于可重入锁。 synchronized与reentrantLock的对比 1、ReentrantLock 拥有Synchronized相同的并发性和内存语义此外还多了定时锁等候和中断锁等候      线程A和B都要获取对象O的锁定假设A获取了对象O锁B将等待A释放对O的锁定 如果使用 synchronized 如果A不释放B将一直等下去不能被中断      如果 使用ReentrantLock如果A不释放可以使B在等待了足够长的时间以后中断等待而干别的事情     ReentrantLock获取锁定与三种方式     a)  lock(), 如果获取了锁立即返回如果别的线程持有锁当前线程则一直处于休眠状态直到获取锁     b) tryLock(), 如果获取了锁立即返回true如果别的线程正持有锁立即返回false     c)tryLock(long timeout,TimeUnit unit)   如果获取了锁定立即返回true如果别的线程正持有锁会等待参数给定的时间在等待的过程中如果获取了锁定就返回true如果等待超时返回false     d) lockInterruptibly:如果获取了锁定立即返回如果没有获取锁定当前线程处于休眠状态直到或者锁定或者当前线程被别的线程中断   2、synchronized是在JVM层面上实现的不但可以通过一些监控工具监控synchronized的锁定而且在代码执行时出现异常JVM会自动释放锁定但是使用Lock则不行lock是通过代码实现的要保证锁定一定会被释放就必须将unLock()放到finally{}中   3、在资源竞争不是很激烈的情况下Synchronized的性能要优于ReetrantLock但是在资源竞争很激烈的情况下Synchronized的性能会下降几十倍但是ReetrantLock的性能能维持常态 都是可重入锁 可重入性在我看来实际上表明了锁的分配机制基于线程的分配而不是基于方法调用的分配。举个简单的例子当一个线程执行到某个synchronized方法时比如说method1而在method1中会调用另外一个synchronized方法method2此时线程不必重新去申请锁而是可以直接执行方法method2。 可中断锁在Java中synchronized就不是可中断锁而Lock是可中断锁。   如果某一线程A正在执行锁中的代码另一线程B正在等待获取该锁可能由于等待时间过长线程B不想等待了想先处理其他事情我们可以让它中断自己或者在别的线程中中断它这种就是可中断锁。 在前面演示lockInterruptibly()的用法时已经体现了Lock的可中断性。 6.公平锁 公平锁即尽量以请求锁的顺序来获取锁。比如同是有多个线程在等待一个锁当这个锁被释放时等待时间最久的线程最先请求的线程会获得该所这种就是公平锁。   非公平锁即无法保证锁的获取是按照请求锁的顺序进行的。这样就可能导致某个或者一些线程永远获取不到锁。 synchronized就是非公平锁它无法保证等待的线程获取锁的顺序。 而对于ReentrantLock和ReentrantReadWriteLock它默认情况下是非公平锁但是可以设置为公平锁。
http://wiki.neutronadmin.com/news/333338/

相关文章:

  • 毕业设计做网站应该学什么手机网站和电脑网站跳转
  • 怎么用2级目录做网站模块式网站制作
  • 公司企业网站建设方案松江网站建设公司怎么样
  • 简单旅游网站模板下载自适应型网站建设费用
  • 网站seo优化的目的wordpress关闭裁剪缩略图
  • h5网站建设需要哪些资料首饰设计网站大全
  • 做网站可以申请国家补助吗seo教程书籍
  • 爱淘苗网站开发模式网络运维工资一般多少
  • 哪些网站做高尔夫旅游软件开发发布平台
  • 网站制作运营建网站被封了
  • 建设银行 网站 字体建设销售网站的好处
  • 如何修改网站内容如何用visual做网站
  • 吴忠市建设局网站推广公司合同
  • 好用网站推荐商业网站的域名代码
  • 国内室内设计网站推荐怎么找做网站的外包公司
  • 网站做下CDN防护惠州制作公司网站
  • 网站源码有什么用想做个网站不知道做什么
  • 遂溪网站开发公司昆山vi设计
  • 搜狗营销专业的seo外包公司
  • 农家乐网站开发项目背景网络规划设计师考试全程指导(第2版) pdf
  • 做go富集的网站优秀手机网站欣赏
  • 交通建设监理协会网站wordpress 4.9 站群
  • WordPress全站展示网站收录下降原因
  • 宝安的医院网站建设vue做网站看不到htmI吗
  • 住房和建设执业资格注册中心网站idc国外服务器
  • 中国建设银行官网站金银纪念币公司网站建设具体实施方案
  • 龙采科技做网站多少钱网站开发属于程序员吗
  • 苏州建设公司网站建设网页qq登录保护怎么关闭
  • app和网站的区别是什么佛山网站建设招标
  • 网站策划资料方案网站建设佰金手指科杰三