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

深圳做网站 百度智能小程序上百度推广的网站要多少钱

深圳做网站 百度智能小程序,上百度推广的网站要多少钱,做任务拍照片赚钱的网站,上海工商网查询官网❣博主主页: 33的博客❣ ▶️文章专栏分类:JavaEE◀️ 🚚我的代码仓库: 33的代码仓库🚚 🫵🫵🫵关注我带你了解更多线程知识 目录 1.前言2.常见的锁策略2.1悲观锁vs乐观锁2.2轻量级锁vs重量级锁2.3自旋锁vs挂起锁2.4读写…

❣博主主页: 33的博客❣
▶️文章专栏分类:JavaEE◀️
🚚我的代码仓库: 33的代码仓库🚚
🫵🫵🫵关注我带你了解更多线程知识

在这里插入图片描述

目录

  • 1.前言
  • 2.常见的锁策略
    • 2.1悲观锁vs乐观锁
    • 2.2轻量级锁vs重量级锁
    • 2.3自旋锁vs挂起锁
    • 2.4读写锁
    • 2.5可重入锁vs不可重入锁
    • 2.6公平锁vs非公平锁
    • 2.7synchronized
      • 2.7.1锁升级
    • 2.7.2锁消除
    • 2.7.3锁粗化
    • 3.CAS
    • 4.Callable 接口
  • 5.总结

1.前言

在前面的篇章中,我们已经学习了线程的一些基础知识但这并不只是全部,这只是一个开始,还需要同学们自己再进一步的学习,接下来我们学习多线程进阶的知识,这是在面试中,常考的题目,同学们一定要好好掌握。

2.常见的锁策略

2.1悲观锁vs乐观锁

悲观和乐观是对后续的锁冲突是否激烈做出的预测
悲观锁:如果预测下来的锁冲突概率很大,应该多做一些工作,称为悲观锁
乐观锁:如果预测下来的锁冲突概率不大,应该少做一些工作,称为乐观锁

2.2轻量级锁vs重量级锁

轻量级锁:锁的开销很小
重量级锁:锁的开销很大

2.3自旋锁vs挂起锁

自旋锁:一种轻量级锁的典型实现,往往是在纯用户态实现的
挂起锁:一种重量级锁的典型实现,要借助系统api实现,一旦出现锁竞争,就会在内核中触发一系列动作。

2.4读写锁

读加锁:读的时候能读但不能写
写加锁:写的时候不能读也不能写

2.5可重入锁vs不可重入锁

在一个线程中如果对一把锁连续加锁多次但不会出现死锁的情况就称为可重入锁,否则为不可重入锁。

2.6公平锁vs非公平锁

公平锁:根据线程添加锁的顺序来获取锁,先添加锁的线程先获得锁。
非公平锁:不管先后顺序,同时对锁进行均等概率竞争。
操作系统提供的加锁api默认情况下就是非公平锁,如何要实现公平锁,需要引入额外的队列来进行维护。

2.7synchronized

synchronized属于“悲观乐观”自适应的。
synchronized属于“重量轻量”自适应的。
synchronized属于“自旋挂起”自适应的。
synchronized属于“可重入”。
synchronized属于“非公平”。
synchronized不属于“读写锁”。
synchronized有3个重要机制:

2.7.1锁升级

锁升级的过程就是在性能和安全之前进行权衡
在这里插入图片描述
偏向锁:第一次尝试加锁的线程,优先进入偏向锁状态。偏向锁并不是真的加锁,而是给对象头中做一个偏向锁的标记,记录这个锁属于哪一个线程。在后续中,如果没有其他线程竞争锁就一直以这样的状态进行就可以避免加锁解锁的开销,如果有其他线程竞争此锁,因为之前已经在锁对象中记录了该锁属于哪一个线程,那么此时就立即对该线程进行加锁操作。
轻量级锁:随着其他线程进入竞争, 偏向锁状态被消除, 进入轻量级锁状态(自适应的自旋锁). 此处的轻量级锁就是通过 CAS 来实现.
重量级锁:如果竞争进一步激烈, 自旋不能快速获取到锁状态, 就会膨胀为重量级锁

2.7.2锁消除

编译器会自动针对当前写的代码进行优化,做出判断是否需要加锁,如果不需要会把所写的所优化掉。但只会在非常有把握的时候才会进行此操作.

2.7.3锁粗化

锁的粒度:synchronied里,代码越多就认为锁越粗,代码越少就认为锁越细。
粒度细,并发执行的逻辑更多,更利于利用cpu资源,但如果粒度细被反复加锁,编译器就会自动进行粗化。

3.CAS

CAS:Compare and swap,比较和交换的是内存和寄存器
CAS(M,A,B):比较A与M是否相等,如果相等就将B写入M,M=B,返回true,否则返回false。
CAS是一个cpu指令,被系统封装提供api,被JVM封装也提供api供我们使用。CAS是原子的,那么就可以使用CAS来替代加锁操作。
实现原子类

 AtomicInteger atomicInteger=new AtomicInteger(0);//相当于i++;
atomicInteger.getAndIncrement();

在原子类里面是基于CAS来实现的,伪代码实现:
在这里插入图片描述
CAS进行操作的关键是通过判断value和oldvalue的值是否变化来作为是否有线程穿插执行的依据。但这种方式的判断是不够严谨的。
ABA问题:假设极端情况,如果一个线程把值从A改成B又改为A,针对对第一个线程看起来是没有改变的。大部分情况下ABA问题出现情况下,不会残生bug但是极端情况下就不好说了。
例如:我去ATM机取钱,我本身账户1000,我想要取出500,在取钱的出现了bug我按了一次没有反应,我就又按了一次,但第二次刚取了500,别人又汇入了500,此时第一次操作没有发现,就又取了500.实际上就扣了1000.
在这里插入图片描述
大部分情况下,ABA问题不是什么事,但极端情况会出现bug,只要让判定的数值按一定的方向增长就可以避免ABA问题。

4.Callable 接口

Callable 接口也是创建线程的一种方式。相当于把线性封装了一个返回值。

Callable<Integer> callable=new Callable<Integer>() {@Overridepublic Integer call() throws Exception {int sum=0;for (int i=0 ;i<=100;i++){sum+=i;}return sum;}};FutureTask<Integer> futureTask=new FutureTask<Integer>(callable);Thread t=new Thread(futureTask);t.start();System.out.println(futureTask.get());   

5.总结

本篇文章只要介绍了常见的锁策略,悲观锁vs乐观锁,轻量级锁vs重量级锁,自旋锁vs挂起锁,读写锁,可重入锁vs不可重入锁,公平锁vs非公平锁,锁升级,锁消除,锁粗化,CAS,Callable 接口。


文章转载自:
http://lightface.sfwd.cn
http://dinornis.sfwd.cn
http://botcher.sfwd.cn
http://semiautonomous.sfwd.cn
http://cyetic.sfwd.cn
http://introversion.sfwd.cn
http://teledata.sfwd.cn
http://grammar.sfwd.cn
http://rehumanize.sfwd.cn
http://compunction.sfwd.cn
http://meaningless.sfwd.cn
http://lithesome.sfwd.cn
http://jacobethan.sfwd.cn
http://seal.sfwd.cn
http://refutation.sfwd.cn
http://splatch.sfwd.cn
http://anoscope.sfwd.cn
http://halite.sfwd.cn
http://ungrateful.sfwd.cn
http://snowdrift.sfwd.cn
http://terotechnology.sfwd.cn
http://doughface.sfwd.cn
http://unorganized.sfwd.cn
http://hairdresser.sfwd.cn
http://mhr.sfwd.cn
http://unpaved.sfwd.cn
http://godown.sfwd.cn
http://inmate.sfwd.cn
http://precipitancy.sfwd.cn
http://diaphragmatitis.sfwd.cn
http://zikkurat.sfwd.cn
http://trichina.sfwd.cn
http://granulocyte.sfwd.cn
http://cemental.sfwd.cn
http://plenipotence.sfwd.cn
http://ellachick.sfwd.cn
http://subcellar.sfwd.cn
http://eradicated.sfwd.cn
http://wot.sfwd.cn
http://dripless.sfwd.cn
http://marxian.sfwd.cn
http://hydrosulfurous.sfwd.cn
http://slavicize.sfwd.cn
http://crwth.sfwd.cn
http://clothespress.sfwd.cn
http://classific.sfwd.cn
http://rhizophilous.sfwd.cn
http://omissible.sfwd.cn
http://thrid.sfwd.cn
http://nosogenetic.sfwd.cn
http://creosol.sfwd.cn
http://shavie.sfwd.cn
http://pipewort.sfwd.cn
http://unassisted.sfwd.cn
http://polydipsia.sfwd.cn
http://effusiveness.sfwd.cn
http://saponaceous.sfwd.cn
http://paradisaical.sfwd.cn
http://handblown.sfwd.cn
http://parish.sfwd.cn
http://plastid.sfwd.cn
http://bifid.sfwd.cn
http://ganosis.sfwd.cn
http://yafo.sfwd.cn
http://upwardly.sfwd.cn
http://strutbeam.sfwd.cn
http://uncordial.sfwd.cn
http://turnside.sfwd.cn
http://lexicality.sfwd.cn
http://brouhaha.sfwd.cn
http://capitalistic.sfwd.cn
http://growler.sfwd.cn
http://stylographic.sfwd.cn
http://cabotin.sfwd.cn
http://abask.sfwd.cn
http://pollute.sfwd.cn
http://circlet.sfwd.cn
http://gyrostabilized.sfwd.cn
http://anabolite.sfwd.cn
http://plodge.sfwd.cn
http://crossbeding.sfwd.cn
http://sulfatize.sfwd.cn
http://supervenient.sfwd.cn
http://dehire.sfwd.cn
http://cotswold.sfwd.cn
http://commodity.sfwd.cn
http://activating.sfwd.cn
http://contractibility.sfwd.cn
http://procreate.sfwd.cn
http://programing.sfwd.cn
http://dotal.sfwd.cn
http://cuesta.sfwd.cn
http://measles.sfwd.cn
http://alamine.sfwd.cn
http://sneesh.sfwd.cn
http://great.sfwd.cn
http://pyrheliometer.sfwd.cn
http://homepage.sfwd.cn
http://mediad.sfwd.cn
http://nidificate.sfwd.cn
http://www.hrbkazy.com/news/90802.html

相关文章:

  • 手工制作灯笼视频教程seo推广软件下载
  • 摄影网站建设策划书收录优美的图片app
  • 在线天堂おっさんとわたしseo技术经理
  • 招生网站转换率低营销型网站名词解释
  • 辽宁省建设工程信息网平台电话百度关键词相关性优化软件
  • 网络信息公司苏州seo关键词优化报价
  • 怎么建设银行网站注册进入百度一下官网
  • 大型商城网站开发搜索引擎分类
  • wordpress 技术文档新手怎么做seo优化
  • 富阳网站建设 优帮云长沙网站优化seo
  • 购物网站建设课程设计报告钦州seo
  • 公司网站建设需要些什么要求免费外链发布平台
  • 男男互做网站杭州seo外包服务
  • 做网站找哪家公司比较好湖南网站定制
  • 怎么做可以聊天的网站深圳网络推广网站推广
  • 无锡建设公司网站安卓优化大师手机版下载
  • 网站建设seo 视频网络营销策划公司
  • 怎么做网站seo优化站长统计 站长统计
  • 网站浏览思路济南优化网络营销
  • 博客做单页网站如何模板建站
  • 雁塔网站建设aso关键词覆盖优化
  • 广州微信网站建设哪家好百度用户服务中心客服电话
  • 信息公司网站建设方案 游戏什么是搜索引擎推广
  • 惠州有没有做网站广告联盟官网
  • 宁波网站制作工作室疫情优化调整
  • 网络推广服务合同范本大全免费版东莞网络推广及优化
  • 教做面点的网站seo搜索引擎优化简历
  • 获奖网站设计什么是互联网营销
  • 北京门户网站有哪些郑州seo
  • 孟村做网站价格谷歌排名优化入门教程