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

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

深入理解Java内存模型(三)——顺序一致性

2014-03-31
阅读 5 分钟
5.2k
前情提要 深入理解Java内存模型(二)——重排序 数据竞争与顺序一致性保证 当程序未正确同步时,就会存在数据竞争。java内存模型规范对数据竞争的定义如下: 在一个线程中写一个变量, 在另一个线程读同一个变量, 而且写和读没有通过同步来排序。 当代码中包含数据竞争时,程序的执行往往产生违反直觉的结果(前一章的示...

深入理解Java内存模型(二)——重排序

2014-03-28
阅读 4 分钟
5.1k
前情提要 深入理解Java内存模型(一)——基础 Java编译器、运行时会对指令进行重排序。这种重排序在单线程和多线程情况下分别有什么影响呢? 数据依赖性 如果两个操作访问同一个变量,且这两个操作中有一个为写操作,此时这两个操作之间就存在数据依赖性。数据依赖分下列三种类型: {代码...} 上面三种情况,只要重排序两...

详细分析Java中断机制

2014-01-17
阅读 7 分钟
3.9k
当我们点击某个杀毒软件的取消按钮来停止查杀病毒时,当我们在控制台敲入quit命令以结束某个后台服务时……都需要通过一个线程去取消另一个线程正在执行的任务。Java没有提供一种安全直接的方法来停止某个线程,但是Java提供了中断机制。

JAVA 多线程和并发基础面试问答

2014-01-17
阅读 6 分钟
14.6k
多线程和并发问题是 Java 技术面试中面试官比较喜欢问的问题之一。在这里,从面试的角度列出了大部分重要的问题,但是你仍然应该牢固的掌握Java多线程基础知识来对应日后碰到的问题。(校对注:非常赞同这个观点)

竞态条件与临界区

2014-01-13
阅读 1 分钟
3.9k
在同一程序中运行多个线程本身不会导致问题,问题在于多个线程访问了相同的资源。如,同一内存区(变量,数组,或对象)、系统(数据库,web services等)或文件。实际上,这些问题只有在一或多个线程向这些资源做了写操作时才有可能发生,只要资源没有发生变化,多个线程读取相同的资源就是安全的。

双重检查锁定与延迟初始化

2014-01-13
阅读 8 分钟
3.9k
在java程序中,有时候可能需要推迟一些高开销的对象初始化操作,并且只有在使用这些对象时才进行初始化。此时程序员可能会采用延迟初始化。但要正确实现线程安全的延迟初始化需要一些技巧,否则很容易出现问题。比如,下面是非线程安全的延迟初始化对象的示例代码:

多线程的优点

2014-01-10
阅读 2 分钟
4.2k
尽管面临很多挑战,多线程有一些优点使得它一直被使用。这些优点是: 资源利用率更好 程序设计在某些情况下更简单 程序响应更快 资源利用率更好想象一下,一个应用程序需要从本地文件系统中读取和处理文件的情景。比方说,从磁盘读取一个文件需要5秒,处理一个文件需要2秒。处理两个文件则需要: {代码...} 从磁盘中读取...

双重检查锁定失效分析

2014-01-10
阅读 11 分钟
5.6k
遗憾的是,在Java中,如果没有额外的同步,它并不可靠。在其它语言中,如c++,实现DCL,需要依赖于处理器的内存模型、编译器实行的重排序以及编译器与同步库之间的交互。由于c++没有对这些做出明确规定,很难说DCL是否有效。可以在c++中使用显式的内存屏障来使DCL生效,但Java中并没有这些屏障。