Bootstrap
我的程序跑了60多小时,就是为了让你看一眼JDK的BUG导致的内存泄漏。

这次的文章从JDK的J.U.C包下的ConcurrentLinkedQueue队列的一个BUG讲起。jetty框架里面的线程池用到了这个队列,导致了内存泄漏。

线程池 ThreadPoolExecutor 原理及源码笔记

前面在学习 JUC 源码时,很多代码举例中都使用了线程池 ThreadPoolExecutor ,并且在工作中也经常用到线程池,所以现在就一步一步看看,线程池的源码,了解其背后的核心原理。

一文带你熟知ForkJoin

摘要:ForkJoin将复杂的计算当做一个任务,而分解的多个计算则是当做一个个子任务来并行执行。

并发场景加锁优化小技巧

在 JDK 中有很多锁,包括 synchronized、ReentrantLock、ReentrantReadWriteLock、锁的使用场景也分很多种,下面看一下对加锁优化的小技巧。

Go 语言快速入门指南:Go 并发初识

大型程序通常由许多较小的子程序组成。 例如,Web 服务器处理来自 Web 浏览器的请求并提供 HTML 网页作为响应。 每个请求都像一个小程序一样被处理。对于像这样的程序,最理想的是能够在同一时间运行它们的小型组件(在 网络服务器的情况下,处理多个请求)。

Go 语言快速入门指南: Go 并发互斥锁

互斥是并发编程中最关键的概念之一。当我们使用 goruntine 和channels 进行并发编程时,如果两个 goruntine 尝试同时访问同一个内存位置的同一数据会发生竞争,有时候会产生意想不到的结果,通常很难调试,不符合日常要求,出现错误甚至很难修复。生活场景假

在nodejs中创建child process

nodejs的main event loop是单线程的,nodejs本身也维护着Worker Pool用来处理一些耗时的操作,我们还可以通过使用nodejs提供的worker_threads来手动创建新的线程来执行自己的任务。

灵活运用分布式锁解决数据重复插入问题

分布式系统不可避免会遇到一些并发场景下的数据冲突,例如读写不一致、数据重复插入等。本文介绍一次典型的在分布式环境下,运用分布式锁解决数据重复插入问题的案例,详细地剖析了造成问题的原因和解决方案的探索。

synchronized 优化手段之锁膨胀机制!

synchronized 在 JDK 1.5 之前性能是比较低的,在那时我们通常会选择使用 Lock 来替代 synchronized。然而这个情况在 JDK 1.6 时就发生了改变,JDK 1.6 中对 synchronized 进行了各种优化,性能也得到了大幅的提升...

ReentrantLock 中的 4 个坑!

JDK 1.5 之前 synchronized 的性能是比较低的,但在 JDK 1.5 中,官方推出一个重量级功能 Lock,一举改变了 Java 中锁的格局。JDK 1.5 之前当我们谈到锁时,只能使用内置锁 synchronized,但如今我们锁的实现又多了一种显式锁 Lock。

Java线程安全-JVM角度解析

文章已同步至GitHub开源项目: JVM底层原理解析

Go 语言快速入门指南: Go 并发互斥锁

互斥是并发编程中最关键的概念之一。当我们使用 goruntine 和channels 进行并发编程时,如果两个 goruntine 尝试同时访问同一个内存位置的同一数据会发生竞争,有时候会产生意想不到的结果,通常很难调试,不符合日常要求,出现错误甚至很难修复。生活场景假

死磕Java并发编程(9):无界线程安全队列ConcurrentLinkedQueue源码解析

这篇文章理解起来不难,相比于 ConcurrentHashMap 比较简单,因为不涉及扩容以及数据迁移等操作,相信你读完一定会有收获的。

虚拟机如何实现synchronized

虚拟机是如何实现synchronized的

死磕Java并发编程(7):读写锁 ReentrantReadWriteLock 源码解析

这是《死磕Java并发编程》系列的第7篇文章 我们在一起来看看 读写锁 ReentrantReadWriteLock 的源码分析,基于Java8。

死磕Java并发编程(7):读写锁 ReentrantReadWriteLock 源码解析

这是《死磕Java并发编程》系列的第7篇文章 我们在一起来看看 读写锁 ReentrantReadWriteLock 的源码分析,基于Java8。

干货分享丨从MPG 线程模型,探讨Go语言的并发程序

摘要:Go 语言的并发特性是其一大亮点,今天我们来带着大家一起看看如何使用 Go 更好地开发并发程序。

小白必看,通俗易懂的LockSupport

Java并发编程系列第三篇LockSupport,上一篇Synchronized文章中有提过,不推荐读者们使用Object的wait、notify、notifyAll等函数做多线程间的通信协同,使用LockSupport会是更好的选择,本篇就来谈谈LockSupport。

Golang 中的并发限制与超时控制

Golang 中的并发限制与超时控制

【并发编程的艺术】详解指令重排序与数据依赖

上一篇我们讲到了处理器在执行时,会对指令进行重排序,而这会导致数据一致性问题。对指令重排的理解非常重要,这也是并发问题出现的最大原因。

sync.singleflight 到底怎么用才对?

缓存 在各种场景中被大量使用,在 Cache Miss(缓存未命中)的情况下,就会出现下图的情况

sync.singleflight 到底怎么用才对?

缓存 在各种场景中被大量使用,在 Cache Miss(缓存未命中)的情况下,就会出现下图的情况

并发编程-原子操作CAS

假定有两个操作A 和B,如果从执行A 的线程来看,当另一个线程执行B 时,要么将B 全部执行完,要么完全不执行B,那么A 和B 对彼此来说是原子的。

一文带你熟知ForkJoin

摘要:ForkJoin将复杂的计算当做一个任务,而分解的多个计算则是当做一个个子任务来并行执行。

死磕Java并发编程(4):happens-before是什么?JMM最最核心的概念,看完你就懂了

happens-before是JMM最核心的概念。对应Java程序员来说,理解happens-before是理解JMM的关键。

技术探索系列 - 轻松带你掌握 JMM(1)

鸟欲高飞先振翅,人求上进先读书 ——李苦禅

Java内存模型

Java内存模型

死磕Java并发编程(4):happens-before是什么?JMM最最核心的概念,看完你就懂了

happens-before是JMM最核心的概念。对应Java程序员来说,理解happens-before是理解JMM的关键。

并发和Read-copy update(RCU)

在上一篇文章中的并发和ABA问题的介绍中,我们提到了要解决ABA中的memory reclamation问题,有一个办法就是使用RCU。

并发和Read-copy update(RCU)

在上一篇文章中的并发和ABA问题的介绍中,我们提到了要解决ABA中的memory reclamation问题,有一个办法就是使用RCU。

死磕Java并发编程(6):从源码分析清楚AQS

这次就彻底搞懂Java并发包中的锁原理,不用每次面试都去背一遍了

这才是图文并茂:我写了1万多字,就是为了让你了解AQS是怎么运行的

从源码角度带你走进AQS的世界,帮助你在Java并发编程方面更上一层楼

并发高?可能是编译优化引发有序性问题

​​摘要:CPU为了对程序进行优化,会对程序的指令进行重排序,此时程序的执行顺序和代码的编写顺序不一定一致,这就可能会引起有序性问题。

阿里要求其内部程序员必须精通的并发编程笔记:原理+模式+应用

Java并发编程作为Java开发当中极其重要的一部分,是每位开发者必看、必学、必会的一部分知识,今天我们就来学习阿里巴巴要求其内部程序员必须去学习的一套Java并发变成笔记,这套笔记从原理、模式、应用三套笔记,外加一份并发编程和PDF来深入学习并发编程~!

其他标签