当前位置:   article > 正文

遇到并发就发怵?这份GitHub标星180k的JAVA并发编程合集有奇效,还不赶紧来学!_github高并发项目推荐

github高并发项目推荐

并发一定比串行快么?

这个问题肯定是错的,并发比串行慢的原因在于:线程有创建和上下文切换的开销

上下文切换

即使是单核处理器也支持多线程执行代码,CPU通过给每个线程分配CPU时间片来实现这个机制。CPU通过时间片分配的算法来循环执行任务,当前任务执行一个时间片后会切换到下一个任务。但是,在切换前会保持上一个任务的状态,以便下次切换回这个任务时,可以再加之这个任务的状态。所以任务从保存到再加载的过程就是一次上下文切换。

资源限制

资源限制指的是程序的执行速度受限于计算机硬件资源或软件资源,如服务器的带宽只有2Mb/s,某个资源的下载速度为1Mb/s,系统启动10个线程去下载资源,下载速度不会变成10Mb/s,所以在进行并发的时候回考虑资源的限制。硬件资源限制有带宽的上传/下载速度、硬盘的读写速度和CPU的处理速度。软件资源限制有数据库的连接数和socket连接数等。
资源限制引来的问题:为了将代码执行速度加快将代码中串行执行的部分变成并发执行,因为资源受限,仍然在串行执行,这时候程序不仅不会加快,反而会变慢,因为增加了上下文切换和资源调度的时间。
如何解决资源限制问题:可以使用集群并行执行程序,既然单机的资源有限,那么可以让程序在多机上运行,比如使用ODPS、Hadoop或者自己搭个服务器集群,不同的机器处理不同的数据,可以通过“数据ID%机器数”,计算得到一个机器编号,然后由对应编号的机器处理这个数据,对于软件资源受限,可以使用资源池来复用如使用连接池将数据库和Socket连接复用,或者在调用对方webservice接口获取数据只建立一个连接。

Java SE 5和6是迈向并发应用开发的巨大进步,其中包括对Java虚拟机的改良,从而支持高性能、高可伸缩性的类和丰富的、崭新的并发构建块。
在《JAVA并发编程合集》中,这些新特性的创造者们不仅解释了其工作原理和使用方式,同时还揭示其背后的动机和设计模式

并发编程

1.概览

2.进程与线程

3. Jav a线程

4.共享模型之管程

5.共享模型之内存

6.共享模型之无锁

7.共享模型之不可变

8.共享模型之工具

模式篇

  • 同步模式之保护性暂停
  • 同步模式之Balking
  • 同步模式之顺序控制
  • 异步模式之生产者/消费者
  • 异步模式之工作线程
  • 终止模式之两阶段终止模式
  • 线程安全单例
  • 享元模式

Java内存模型

原理篇

  • 指令级并行原理
  • cpu缓存结构原理
  • volatile原理
  • final原理
  • Monitor原理
  • syncronized原理
  • synchronized原理进阶
  • wait notify原理
  • join原理
  • park unpark原理
  • AQS原理
  • ReentrantLock原理
  • 读写锁原理
  • Semaphore原理
  • ConcurrentHashMap原理
  • LinkedBlockingQueue原理
  • ConcurrentLinkedQueue原理

应用篇

  1. 效率
  2. 限制
  3. 互斥
  4. 同步和异步
  5. 缓存
  6. 分治
  7. 统筹
  8. 定时

并发基础

线程池

组赛队列

20个高并发编程必备知识点

借用Java并发编程实践中的话"编写正确的程序并不容易,而编写正常的并发程序就更难了",相比于顺序执行的情况,多线程的线程安全问题是微妙而且出乎意料的,因为在没有进行适当同步的情况下多线程中各个操作的顺序是不可预期的,下面算是对多线程情况下同步策略的一个简单介绍。

  • 问题—:什么是线程安全问题?
  • 问题二:什么是共享变里可见性问题?
  • 问题三:原子性?
  • i问题四:CAS介绍?
  • 问题五:什么是可重入锁?
  • 问题六:Synchr onized关键字?
  • 问题七:ReentrantReadWriteLock介绍?
  • 问题八:Volatile变里?
  • 问题九:乐观锁与悲观锁?
  • 问题十:独占锁与共享锁?
  • 问题十—:公平锁与非公平锁?
  • 问题十二:AbstractQueuedSynchronizer介绍?
  • 问题十三:CountDownLatch原理?
  • i问题十四:EeertrantLock独占锁原理?
  • i问题十五:ReentrantReadWriteLock原理?
  • 问题十六:什么是重排序问题?
  • 问题十七:什么是中断?
  • 问题十八:FutureTazk原理?
  • 问题十九:ConcurrentHashMap原理简述?

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/667677
推荐阅读
相关标签
  

闽ICP备14008679号