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

班级网站建设思路北京疫情又严重了

班级网站建设思路,北京疫情又严重了,域名服务器分为四种,做网站阿里云买哪个服务器好点1.悲观锁 悲观锁比较悲观,它认为如果不锁住这个资源,别的线程就会来争抢,就会造成数据结果错误,所以悲观锁为了确保结果的正确性,会在每次获取并修改数据时,都把数据锁住,让其他线程无法访问该…

1.悲观锁

悲观锁比较悲观,它认为如果不锁住这个资源,别的线程就会来争抢,就会造成数据结果错误,所以悲观锁为了确保结果的正确性,会在每次获取并修改数据时,都把数据锁住,让其他线程无法访问该数据,这样就可以确保数据内容万无一失。

举个例子

  • 假设线程 A 和 B 使用的都是悲观锁,所以它们在尝试获取同步资源时,必须要先拿到锁。
  • 假设线程 A 拿到了锁,并且正在操作同步资源,那么此时线程 B 就必须进行等待。
  • 而当线程 A 执行完毕后,CPU 才会唤醒正在等待这把锁的线程 B 再次尝试获取锁。
  • 如果线程 B 现在获取到了锁,才可以对同步资源进行自己的操作。这就是悲观锁的操作流程。

2.乐观锁

乐观锁比较乐观,认为自己在操作资源的时候不会有其他线程来干扰,所以并不会锁住被操作对象,不会不让别的线程来接触它,同时,为了确保数据正确性,在更新之前,会去对比在我修改数据期间,数据有没有被其他线程修改过:如果没被修改过,就说明真的只有我自己在操作,那我就可以正常的修改数据;

如果发现数据和我一开始拿到的不一样了,说明其他线程在这段时间内修改过数据,那说明我迟了一步,所以我会放弃这次修改,并选择报错、重试等策略。

乐观锁的实现一般都是利用 CAS 算法实现的。

举个例子:

  • 假设线程 A 此时运用的是乐观锁。那么它去操作同步资源的时候,不需要提前获取到锁,而是可以直接去读取同步资源,并且在自己的线程内进行计算。
  • 当它计算完毕之后、准备更新同步资源之前,会先判断这个资源是否已经被其他线程所修改过。
  • 如果这个时候同步资源没有被其他线程修改更新,也就是说此时的数据和线程 A 最开始拿到的数据是一致的话,那么此时线程 A 就会去更新同步资源,完成修改的过程。
  • 而假设此时的同步资源已经被其他线程修改更新了,线程 A 会发现此时的数据已经和最开始拿到的数据不一致了,那么线程 A 不会继续修改该数据,而是会根据不同的业务逻辑去选择报错或者重试。

3.相关用法

悲观锁:synchronized 关键字和 Lock 接口

Java 中悲观锁的实现包括 synchronized 关键字和 Lock 相关类等,我们以 Lock 接口为例,例如 Lock 的实现类 ReentrantLock,类中的 lock() 等方法就是执行加锁,而 unlock() 方法是执行解锁。处理资源之前必须要先加锁并拿到锁,等到处理完了之后再解开锁,这就是非常典型的悲观锁思想。

乐观锁:原子类

乐观锁的典型案例就是原子类,例如 AtomicInteger 在更新数据时,就使用了乐观锁的思想,多个线程可以同时操作同一个原子变量。

数据库

  • 数据库中同时拥有悲观锁和乐观锁的思想。例如,我们如果在 MySQL 选择 select for update 语句,那就是悲观锁,在提交之前不允许第三方来修改该数据,这当然会造成一定的性能损耗,在高并发的情况下是不可取的。
  • 相反,我们可以利用一个版本 version 字段在数据库中实现乐观锁。在获取及修改数据时都不需要加锁,但是我们在获取完数据并计算完毕,准备更新数据时,会检查版本号和获取数据时的版本号是否一致,如果一致就直接更新,如果不一致,说明计算期间已经有其他线程修改过这个数据了,那我就可以选择重新获取数据,重新计算,然后再次尝试更新数据。
UPDATE studentSET name = ‘小李’,version= 2WHERE   id= 100AND version= 1

4.使用场景

悲观锁适合用于并发写入多、临界区代码复杂、竞争激烈等场景,这种场景下悲观锁可以避免大量的无用的反复尝试等消耗。

乐观锁适用于大部分是读取,少部分是修改的场景,也适合虽然读写都很多,但是并发并不激烈的场景。在这些场景下,乐观锁不加锁的特点能让性能大幅提高。

http://www.tj-hxxt.cn/news/82575.html

相关文章:

  • 官方网站查询电工证郑州百度快照优化
  • 国外效果做的好的网站中国seo第一人
  • 2018做网站开发一个月工资多少网站的优化从哪里进行
  • 做消费信贷网站爱站网爱情电影网
  • 网站运营每天做的怎样加入网络营销公司
  • 微信个人号管理系统seo网站内容优化
  • 怎样网站制作设计此网站服务器不在国内维护
  • 彩票网站有人做吗app推广渠道在哪接的单子
  • 有哪些效果图做的好的网站网络推广发展
  • 怎样做网站认证seo免费外链工具
  • 怎样申请网站域名广告开户
  • 设计素材网站能挣钱吗短视频seo系统
  • 企业门户网站中国燃气河南推广网站
  • 地产网站建设方案常州网站建设书生商友
  • 山西网站制作公司哪家好湖南正规seo公司
  • html5网站带后台关键词排名优化易下拉霸屏
  • 原创wordpress付费主题搜索引擎排名优化方案
  • 网站建设诚信服务东莞网站seo推广
  • 崇明建设镇乡镇府网站百度推广费用一天多少钱
  • 大余做网站建设电商的运营模式有几种
  • 用dw做php网站凡科建站登录
  • 网站建设先进事迹互联网推广渠道有哪些
  • 网站建设的整体流程百度竞价推广出价技巧
  • 产品报价网免费关键词优化排名软件
  • 设置网站404页面国际新闻最新消息今天 新闻
  • 专门做茶叶会的音乐网站广州seo顾问
  • 包装设计软件windows优化大师有毒吗
  • 如果网站没有做icp备案网站推广推广
  • 浙江华企 做网站怎么样百度网址大全官方下载
  • 提供温州手机网站制作哪家好百度关键词排名代发