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

河北网站建设与推广百度seo关键词优化公司

河北网站建设与推广,百度seo关键词优化公司,他城任我做王14码中特网站,天津市精神文明建设网站如果是单个线程,在 CPU 调用之后,那么它基本上是不会被调度出去的。如果可运行的线程数远大于 CPU 数 量,那么操作系统最终会将某个正在运行的线程调度出来,从而使其它线程能够使用 CPU ,这就会导致上下文切换。 还有&…

    如果是单个线程,在 CPU 调用之后,那么它基本上是不会被调度出去的。如果可运行的线程数远大于 CPU 数 量,那么操作系统最终会将某个正在运行的线程调度出来,从而使其它线程能够使用 CPU ,这就会导致上下文切换。

    还有,在多线程中如果使用了竞争锁,当线程由于等待竞争锁而被阻塞时,JVM 通常会将 这个锁挂起,并允许它被交换出去。如果频繁地发生阻塞,CPU 密集型的程序就会发生更  多的上下文切换。

   那么问题来了,我们知道在某些场景下使用多线程是非常必要的,但多线程编程给系统带来 了上下文切换,从而增加的性能开销也是实打实存在的。那么我们该如何优化多线程上下文 切换呢?这就是我今天要和你分享的话题,我将重点介绍几种常见的优化方法。

竞争锁优化

  多线程对锁资源的竞争会引起上下文切换,还有锁竞争导致的线程阻塞越多,上下文切换就 越频繁,系统的性能开销也就越大。由此可见,在多线程编程中,锁其实不是性能开销的根 源,竞争锁才是。

减少锁的持有时间

   我们知道,锁的持有时间越长,就意味着有越多的线程在等待该竞争资源释放。如果是 Synchronized 同步锁资源,就不仅是带来线程间的上下文切换,还有可能会增加进程间的 上下文切换。

例如,可以将一些与锁无关的代码移出同步 代码块,尤其是那些开销较大的操作以及可能被阻塞的操作。

优化前

public synchronized void mySyncMethod(){ 
2 businesscode1(); 
3 mutextMethod(); 
4 businesscode2();
5 }

优化后

public void mySyncMethod(){ businesscode1(); synchronized(this){mutextMethod(); }businesscode2();}

降低锁的粒度

   同步锁可以保证对象的原子性,我们可以考虑将锁粒度拆分得更小一些,以此避免所有线程 对一个锁资源的竞争过于激烈。具体方式有以下两种:

锁分离

    与传统锁不同的是,读写锁实现了锁分离,也就是说读写锁是由“读锁”和“写锁”两个锁 实现的,其规则是可以共享读,但只有一个写。 这样做的好处是,在多线程读的时候,读读是不互斥的,读写是互斥的,写写是互斥的。而 传统的独占锁在没有区分读写锁的时候,读写操作一般是:读读互斥、读写互斥、写写互 斥。所以在读远大于写的多线程场景中,锁分离避免了在高并发读情况下的资源竞争,从而 避免了上下文切换

锁分段

  我们在使用锁来保证集合或者大对象原子性时,可以考虑将锁对象进一步分解。例如,我之 前讲过的 Java1.8 之前版本的 ConcurrentHashMap 就使用了锁分段。

wait/notify 的使用导致了较多的上下文切换

    结合以下图片,我们可以看到,在消费者第一次申请到锁之前,发现没有商品消费,此时会 执行 Object.wait() 方法,这里会导致线程挂起,进入阻塞状态,这里为一次上下文切换。

    当生产者获取到锁并执行 notifyAll() 之后,会唤醒处于阻塞状态的消费者线程,此时这里 又发生了一次上下文切换。 被唤醒的等待线程在继续运行时,需要再次申请相应对象的内部锁,此时等待线程可能需要 和其它新来的活跃线程争用内部锁,这也可能会导致上下文切换。 如果有多个消费者线程同时被阻塞,用 notifyAll() 方法,将会唤醒所有阻塞的线程。而某 些商品依然没有库存,过早地唤醒这些没有库存的商品的消费线程,可能会导致线程再次进 入阻塞状态,从而引起不必要的上下文切换。


推荐阅读

亿级在线百万并发认证业务分析

业务幂等性技术架构体系

记一次线上SQL死锁事故:如何避免死锁

http://www.dtcms.com/wzjs/512339.html

相关文章:

  • 天津市住房和城乡建设厅网站app开发工具
  • 网站模块建设网络营销课程报告
  • 怎么做网站填内容aso具体优化
  • 互联网推广销售好做吗网站优化联系
  • 西安网站公司建设站长之家官网
  • 商务网站规划与建设课设的项目需求网络营销战略有什么用
  • 上海做网站技术怎样在百度上做广告
  • 免费建网站系统英语培训机构
  • wordpress+高清背景新乡搜索引擎优化
  • 网站开发python整站seo优化哪家好
  • 怎样破解网站后台密码线上怎么做推广和宣传
  • 瑞安网站全国疫情最新报告
  • 优秀设计网站点评自媒体服务平台
  • dnf制裁做任务网站精准营销名词解释
  • 建设银行网站一直打不开app拉新怎么对接渠道
  • 专业做网站哪家强线上免费推广平台都有哪些
  • java web做网站盘多多网盘搜索
  • 南充网站建设费用最新热点新闻
  • 成品网站w灬源码三叶草谷歌搜索引擎大全
  • 网站seo的优化怎么做上海网站seo策划
  • 游戏开发需要学什么编程seo搜索引擎优化入门
  • 网站建设优化服务如何手机百度关键词优化
  • 开发网站实时监控上海最新政策
  • 网站项目名称seo站长综合查询
  • 彩页设计网站网络营销制度课完整版
  • 哪个做砍价活动的网站好搭建网站的步骤
  • 建电子商务网站多少钱网站策划书模板
  • 什么样的网站可以做外链象山seo外包服务优化
  • 广州五屏网站建设竞价推广出价多少合适
  • 上海网站开发一对一培训价格合肥seo管理