并发编程的挑战
1上下文切换。
cpu通过时间片分配算法来执行任务,从一个任务切换到另一个任务时会保留上个任务的状态。
多线程切换上下文开销大,不一定比单线程快。
减少上下文切换的方法
1无锁并发,不同线程处理不同数据段
2CAS算法,java的原子编程使用此算法,不需要加锁。
3最少线程编程
4协程:单线程多任务,并且支持切换。
2死锁
3 资源限制的挑战:
1网络带宽限制,硬件限制
2资源限制会导致并发效率低下
3硬件资源限制可以用分布式集群解决资源限制问题,让程序在多机执行。
软件资源,可以采取资源池复用的方式,如数据库连接池,socket连接复用,webservice连接复用等。
4资源受限时的并发,根据资源调整并发度,比如根据带宽调整,根据数据库连接数调整。
微信公众号
个人公众号:程序员黄小斜
微信公众号【程序员黄小斜】新生代青年聚集地,程序员成长充电站。作者黄小斜,职业是阿里程序员,身份是斜杠青年,希望和更多的程序员交朋友,一起进步和成长!专注于分享技术、面试、职场等成长干货,这一次,我们一起出发。
关注公众号后回复“2019”领取我这两年整理的学习资料,涵盖自学编程、求职面试、算法刷题、Java技术学习、计算机基础和考研等8000G资料合集。
技术公众号:Java技术江湖
微信公众号【Java技术江湖】一位阿里 Java 工程师的技术小站,专注于 Java 相关技术:SSM、SpringBoot、MySQL、分布式、中间件、集群、Linux、网络、多线程,偶尔讲点Docker、ELK,同时也分享技术干货和学习经验,致力于Java全栈开发!
关注公众号后回复“PDF”即可领取200+页的《Java工程师面试指南》强烈推荐,几乎涵盖所有Java工程师必知必会的知识点。
版权声明:本文为a724888原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。