43、软件事务内存:借鉴数据库的并发经验很多同学反馈说,工作了挺长时间但是没有机会接触并发编程,实际上我们天天都在写并发程序,只不过并发相关的问题都被类似Tomcat这样的Web服务器以及MySQL这样的数据库解决了。尤其是数据库,在解决并发问题方面,可谓成绩斐然,它的事务机制非常简单易用...2026-01-19Java并发编程实战
42、Actor模型:面向对象原生的并发模型上学的时候,有门计算机专业课叫做面向对象编程,学这门课的时候有个问题困扰了我很久,按照面向对象编程的理论,对象之间通信需要依靠消息,而实际上,像C++、Java这些面向对象的语言,对象之间通信,依靠的是对象方法。对象方法和过程语言里的函数本质上没有区...2026-01-19Java并发编程实战
41、案例分析(四):高性能数据库连接池HiKariCP实际工作中,我们总会难免和数据库打交道;只要和数据库打交道,就免不了使用数据库连接池。业界知名的数据库连接池有不少,例如c3p0、DBCP、Tomcat JDBC Connection Pool、Druid等,不过最近最火的是HiKariCP。 Hi...2026-01-19Java并发编程实战
40、案例分析(三):高性能队列Disruptor我们在[《20 | 并发容器:都有哪些“坑”需要我们填?》]介绍过Java SDK提供了2个有界队列:ArrayBlockingQueue 和 LinkedBlockingQueue,它们都是基于ReentrantLock实现的,在高并发场景下,锁的...2026-01-19Java并发编程实战
39、案例分析(二):高性能网络应用框架NettyNetty是一个高性能网络应用框架,应用非常普遍,目前在Java领域里,Netty基本上成为网络程序的标配了。Netty框架功能丰富,也非常复杂,今天我们主要分析Netty框架中的线程模型,而线程模型直接影响着网络程序的性能。 在介绍Netty的线程...2026-01-19Java并发编程实战
38、案例分析(一):高性能限流器Guava RateLimiter从今天开始,我们就进入案例分析模块了。 这个模块我们将分析四个经典的开源框架,看看它们是如何处理并发问题的,通过这四个案例的学习,相信你会对如何解决并发问题有个更深入的认识。 首先我们来看看Guava RateLimiter是如何解决高并发场景下的限...2026-01-19Java并发编程实战
37、设计模式模块热点问题答疑多线程设计模式是前人解决并发问题的经验总结,当我们试图解决一个并发问题时,首选方案往往是使用匹配的设计模式,这样能避免走弯路。同时,由于大家都熟悉设计模式,所以使用设计模式还能提升方案和代码的可理解性。 在这个模块,我们总共介绍了9种常见的多线程设计...2026-01-19Java并发编程实战
36、生产者、消费者模式:用流水线思想提高效率前面我们在[《34 | Worker Thread模式:如何避免重复创建线程?》]中讲到,Worker Thread模式类比的是工厂里车间工人的工作模式。但其实在现实世界,工厂里还有一种流水线的工作模式,类比到编程领域,就是生产者-消费者模式。 生产...2026-01-19Java并发编程实战
35、两阶段终止模式:如何优雅地终止线程前面两篇文章我们讲述的内容,从纯技术的角度看,都是启动多线程去执行一个异步任务。既启动,那又该如何终止呢?今天咱们就从技术的角度聊聊如何优雅地终止线程,正所谓有始有终。 在[《09 | Java线程(上):Java线程的生命周期》]中,我曾讲过:线程...2026-01-19Java并发编程实战
34、Worker Thread模式:如何避免重复创建线程在[上一篇文章]中,我们介绍了一种最简单的分工模式——Thread-Per-Message模式,对应到现实世界,其实就是委托代办。这种分工模式如果用Java Thread实现,频繁地创建、销毁线程非常影响性能,同时无限制地创建线程还可能导致OOM,所...2026-01-19Java并发编程实战