43、软件事务内存:借鉴数据库的并发经验

很多同学反馈说,工作了挺长时间但是没有机会接触并发编程,实际上我们天天都在写并发程序,只不过并发相关的问题都被类似Tomcat这样的Web服务器以及MySQL这样的数据库解决了。尤其是数据库,在解决并发问题方面,可谓成绩斐然,它的事务机制非常简单易用...

Java并发编程实战

42、Actor模型:面向对象原生的并发模型

上学的时候,有门计算机专业课叫做面向对象编程,学这门课的时候有个问题困扰了我很久,按照面向对象编程的理论,对象之间通信需要依靠消息,而实际上,像C++、Java这些面向对象的语言,对象之间通信,依靠的是对象方法。对象方法和过程语言里的函数本质上没有区...

Java并发编程实战

41、案例分析(四):高性能数据库连接池HiKariCP

实际工作中,我们总会难免和数据库打交道;只要和数据库打交道,就免不了使用数据库连接池。业界知名的数据库连接池有不少,例如c3p0、DBCP、Tomcat JDBC Connection Pool、Druid等,不过最近最火的是HiKariCP。 Hi...

Java并发编程实战

40、案例分析(三):高性能队列Disruptor

我们在[《20 | 并发容器:都有哪些“坑”需要我们填?》]介绍过Java SDK提供了2个有界队列:ArrayBlockingQueue 和 LinkedBlockingQueue,它们都是基于ReentrantLock实现的,在高并发场景下,锁的...

Java并发编程实战

39、案例分析(二):高性能网络应用框架Netty

Netty是一个高性能网络应用框架,应用非常普遍,目前在Java领域里,Netty基本上成为网络程序的标配了。Netty框架功能丰富,也非常复杂,今天我们主要分析Netty框架中的线程模型,而线程模型直接影响着网络程序的性能。 在介绍Netty的线程...

Java并发编程实战

38、案例分析(一):高性能限流器Guava RateLimiter

从今天开始,我们就进入案例分析模块了。 这个模块我们将分析四个经典的开源框架,看看它们是如何处理并发问题的,通过这四个案例的学习,相信你会对如何解决并发问题有个更深入的认识。 首先我们来看看Guava RateLimiter是如何解决高并发场景下的限...

Java并发编程实战

37、设计模式模块热点问题答疑

多线程设计模式是前人解决并发问题的经验总结,当我们试图解决一个并发问题时,首选方案往往是使用匹配的设计模式,这样能避免走弯路。同时,由于大家都熟悉设计模式,所以使用设计模式还能提升方案和代码的可理解性。 在这个模块,我们总共介绍了9种常见的多线程设计...

Java并发编程实战

36、生产者、消费者模式:用流水线思想提高效率

前面我们在[《34 | Worker Thread模式:如何避免重复创建线程?》]中讲到,Worker Thread模式类比的是工厂里车间工人的工作模式。但其实在现实世界,工厂里还有一种流水线的工作模式,类比到编程领域,就是生产者-消费者模式。 生产...

Java并发编程实战

35、两阶段终止模式:如何优雅地终止线程

前面两篇文章我们讲述的内容,从纯技术的角度看,都是启动多线程去执行一个异步任务。既启动,那又该如何终止呢?今天咱们就从技术的角度聊聊如何优雅地终止线程,正所谓有始有终。 在[《09 | Java线程(上):Java线程的生命周期》]中,我曾讲过:线程...

Java并发编程实战

34、Worker Thread模式:如何避免重复创建线程

在[上一篇文章]中,我们介绍了一种最简单的分工模式——Thread-Per-Message模式,对应到现实世界,其实就是委托代办。这种分工模式如果用Java Thread实现,频繁地创建、销毁线程非常影响性能,同时无限制地创建线程还可能导致OOM,所...

Java并发编程实战
17677787980268