阿里云出现大规模故障;2023 最佳发明榜单;愤怒的南瓜|思否技术圈周刊

2023-11-17
阅读 3 分钟
618
双十一刚结束,阿里云就大面积故障,持续长达 3 个半小时。据阿里云公告,故障源于某个底层服务组件,影响地域涵盖了国内以及海外多个国家。“淘宝崩了”、“外卖崩了”、“闲鱼崩了”等迅速冲上热搜。大批依赖阿里云的设施随之崩溃:外卖派送停止、超市无法结账、停车场不抬杆。甚至洗衣机、直饮水机和充电桩等服务也停止运转。
封面图

深入理解Java内存模型(五)——锁

2014-04-09
阅读 8 分钟
5.7k
锁是java并发编程中最重要的同步机制。锁除了让临界区互斥执行外,还可以让释放锁的线程向获取同一个锁的线程发送消息。下面是锁释放-获取的示例代码:

深入理解Java内存模型(四)—— volatile

2014-04-02
阅读 7 分钟
5.3k
当我们声明共享变量为volatile后,对这个变量的读/写将会很特别。理解volatile特性的一个好方法是:把对volatile变量的单个读/写,看成是使用同一个锁对这些单个读/写操作做了同步。下面我们通过具体的示例来说明,请看下面的示例代码:

Java中的读写锁

2014-02-24
阅读 10 分钟
3.5k
假设你的程序中涉及到对一些共享资源的读和写操作,且写操作没有读操作那么频繁。在没有写操作的时候,两个线程同时读一个资源没有任何问题,所以应该允许多个线程能在同时读取共享资源。但是如果有一个线程想去写这些共享资源,就不应该再有其它线程对该资源进行读或写(译者注:也就是说:读-读能共存,读-写不能共存...

Java中的锁

2014-01-21
阅读 5 分钟
8.7k
锁像synchronized同步块一样,是一种线程同步机制,但比Java中的synchronized同步块更复杂。因为锁(以及其它更高级的线程同步机制)是由synchronized同步块的方式实现的,所以我们还不能完全摆脱synchronized关键字(译者注:这说的是Java 5之前的情况)。

无锁并发和无等待并发

2014-01-20
阅读 1 分钟
5.3k
在无锁系统中,当任何特定的运算被阻塞的时候,所有CPU可以继续处理其他的运算。换种方式说,在无锁系统中,当给定线程被其他线程阻塞的时候,所有CPU可以不停的继续处理其他工作。无锁算法大大增加系统整体的吞吐量,因为它只偶尔会增加一定的交易延迟。大部分高端数据库系统是基于无锁算法而构造的,以满足不同级别。

基于锁的并发算法 vs 无锁的并发算法

2014-01-14
阅读 3 分钟
3.2k
上周在由Heinz Kabutz通过JCrete 组织的开放空间会议(unconference)上,我参加一个新的java规范 JSR166 StampedLock 的审查会议。 StampedLock 是为了解决多个readers 并发访问共享状态时,系统出现的内存地址竞争问题。在设计上通过使用乐观的读操作, StampedLock 比 ReentrantReadWriteLock 更加高效;

为什么ConcurrentHashMap是弱一致的

2014-01-03
阅读 6 分钟
7.7k
本文将用到Java内存模型的happens-before偏序关系(下文将简称为hb)以及ConcurrentHashMap的底层模型相关的知识。happens-before相关内容参见:JLS §17.4.5. Happens-before Order、深入理解Java内存模型以及Happens before;ConcurrentHashMap的详细介绍以及底层原理见深入分析ConcurrentHashMap。本文将从ConcurrentH...

AbstractQueuedSynchronizer的介绍和原理分析

2013-12-28
阅读 17 分钟
4k
简介提供了一个基于FIFO队列,可以用于构建锁或者其他相关同步装置的基础框架。该同步器(以下简称同步器)利用了一个int来表示状态,期望它能够成为实现大部分同步需求的基础。使用的方法是继承,子类通过继承同步器并需要实现它的方法来管理其状态,管理的方式就是通过类似acquire和release的方式来操纵状态。然而多线...