首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
Java并发
订阅
冰橙的天空
更多收藏集
10篇文章 · 0订阅
并发环境下,先操作数据库还是先操作缓存?
在分布式系统中,缓存和数据库同时存在时,如果有写操作的时候,先操作数据库还是先操作缓存呢?先思考一下,可能会存在哪些问题,再往下看。下面我分几种方案阐述。 假设有一写(线程A)一读(线程B)操作,先操作缓存,在操作数据库。,如下流程图所示: 这样看,没啥问题。我们再看第二个流程…
Java之AQS原理浅析
AQS全称AbstractQueuedSynchronizer,它是实现 JCU包中几乎所有的有关锁、多线程并发以及线程同步器等重要组件的基石, 其核心思想就是volatile int state这个属性配合Unsafe这个工具类来实现对当前锁的状态进行修改 。 AQS内部维护…
线程篇3:[-synchronized-]
零、前言一、多线程的简单回顾1.入门级2.如何让打印在两个线程完成后才调用2.1:让主线程先睡一会2.2.join方法3.结果呢?3.1下面是十次结果3.2从中能看出什么?3.3为什么3.4:i++发
深入理解HashMap(一)
hashmap我们都用过很多次了,主要目的就是为了加快我们的查找速度。我们学过数据结构的都知道,数组的查询和修改速度很快,但是增加一个元素或者删除一个元素就很慢,但是链表就反过来,链表是增加和删除一个元素很快,查询和修改就很慢。 通常来说,我们为了提高查询的速度,那么在插入元素…
Java 8 CompletableFuture 教程
Java 8 有大量的新特性和增强如 Lambda 表达式,Streams,CompletableFuture等。在本篇文章中我将详细解释清楚CompletableFuture以及它所有方法的使用。 在Java中CompletableFuture用于异步编程,异步编程是编写非阻…
线程池没你想的那么简单
原以为线程池还挺简单的(平时常用,也分析过原理),这次是想自己动手写一个线程池来更加深入的了解它;但在动手写的过程中落地到细节时发现并没想的那么容易。结合源码对比后确实不得不佩服 Doug Lea 。 我觉得大部分人直接去看 java.util.concurrent.Threa…
深入理解 Java 线程池:ThreadPoolExecutor
本文比较详细的分析了线程池的工作流程: 分析了线程的创建,任务的提交,状态的转换以及线程池的关闭;介绍了线程池关闭时的过程,也分析了 shutdown 方法与 getTask 方法存在竞态条件等等。
Java并发5:ConcurrentHashMap
HashMap 是非线程安全的,put操作可能导致死循环。其解决方案有 HashTable 和 Collections.synchronizedMap(hashMap) 。这两种方案都是对读写加锁,独占式,效率比较低下。 HashMap 在并发执行put操作时会引起死循环,因为…
分布式锁的几种实现方式~
目前几乎很多大型网站及应用都是分布式部署的,分布式场景中的数据一致性问题一直是一个比较重要的话题。分布式的CAP理论告诉我们“任何一个分布式系统都无法同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance…
JVM的ServerSocket是怎么实现的(上)
JDK 为我们提供了 ServerSocket 类作为服务端套接字的实现,通过它可以让主机监听某个端口而接收其他端的请求,处理完后还可以对请求端做出响应。它的内部真正实现是通过 SocketImpl 类来实现的,它提供了工厂模式,所以如果自己想要其他的实现也可以通过工厂模式来改…