摘要:
在上一篇文章中,我们围绕volatile关键字做了很多阐述,主要介绍了volatile的用法、原理以及特性。在上一篇文章中,我提到过:volatile只能保证可见性和有序性,无法保证原子性。关于这部分内容,有读者阅读之后表示还是不是很理解,所以我再单独写一篇文章深入分析一下。 volatile与有序 阅读全文
随笔分类 - 多线程
再有人问你synchronized是什么,就把这篇文章发给他
2018-11-13 21:38 by GarfieldEr007, 327 阅读, 收藏, 编辑
摘要:
在再有人问你Java内存模型是什么,就把这篇文章发给他。中我们曾经介绍过,Java语言为了解决并发编程中存在的原子性、可见性和有序性问题,提供了一系列和并发处理相关的关键字,比如synchronized、volatile、final、concurren包等。 在《深入理解Java虚拟机》中,有这样一 阅读全文
Java的并发编程中的多线程问题到底是怎么回事儿?
2018-11-13 21:32 by GarfieldEr007, 257 阅读, 收藏, 编辑
摘要:
在我之前的一篇《再有人问你Java内存模型是什么,就把这篇文章发给他。》文章中,介绍了Java内存模型,通过这篇文章,大家应该都知道了Java内存模型的概念以及作用,这篇文章中谈到,在Java并发编程中,通常会遇到三个问题,即原子性问题、一致性问题和有序性问题。 上面一篇文章简单介绍了一下,由于各种 阅读全文
深入理解多线程(五)—— Java虚拟机的锁优化技术
2018-11-13 21:31 by GarfieldEr007, 579 阅读, 收藏, 编辑
摘要:
本文是《深入理解多线程》的第五篇文章,前面几篇文章中我们从synchronized的实现原理开始,一直介绍到了Monitor的实现原理。 前情提要 通过前面几篇文章,我们已经知道: 1、同步方法通过ACC_SYNCHRONIZED关键字隐式的对方法进行加锁。当线程要执行的方法被标注上ACC_SYNC 阅读全文
Java中线程池,你真的会用吗?
2018-11-13 21:24 by GarfieldEr007, 1363 阅读, 收藏, 编辑
摘要:
在《深入源码分析Java线程池的实现原理》这篇文章中,我们介绍过了Java中线程池的常见用法以及基本原理。 在文中有这样一段描述: 可以通过Executors静态工厂构建线程池,但一般不建议这样使用。 关于这个问题,在那篇文章中并没有深入的展开。作者之所以这么说,是因为这种创建线程池的方式有很大的隐 阅读全文
深入理解多线程(四)—— Moniter的实现原理
2018-11-13 21:23 by GarfieldEr007, 402 阅读, 收藏, 编辑
摘要:
在深入理解多线程(一)——Synchronized的实现原理中介绍过关于Synchronize的实现原理,无论是同步方法还是同步代码块,无论是ACC_SYNCHRONIZED还是monitorenter、monitorexit都是基于Monitor实现的,那么这篇来介绍下什么是Monitor。 操作 阅读全文
深入理解多线程(三)—— Java的对象头
2018-11-13 21:22 by GarfieldEr007, 834 阅读, 收藏, 编辑
摘要:
上一篇文章中我们从HotSpot的源码入手,介绍了Java的对象模型。这一篇文章在上一篇文章的基础上再来介绍一下Java的对象头。主要介绍一下对象头的作用,结构以及他和锁的关系。 Java对象模型回顾与勘误 在上一篇文章中,关于对象头的部分描述有误,我已经在我博客的文章中就行修正 。这里再重新表述一 阅读全文
深入理解多线程(一)——Synchronized的实现原理
2018-11-13 21:21 by GarfieldEr007, 403 阅读, 收藏, 编辑
摘要:
synchronized,是Java中用于解决并发情况下数据同步访问的一个很重要的关键字。当我们想要保证一个共享资源在同一时间只会被一个线程访问到时,我们可以在代码中使用synchronized关键字对类或者对象加锁。那么,本文来介绍一下synchronized关键字的实现原理是什么。在阅读本文之间 阅读全文
深入理解多线程(二)—— Java的对象模型
2018-11-13 21:21 by GarfieldEr007, 694 阅读, 收藏, 编辑
摘要:
上一篇文章中简单介绍过synchronized关键字的方式,其中,同步代码块使用monitorenter和monitorexit两个指令实现,同步方法使用ACC_SYNCHRONIZED标记符实现。后面几篇文章会从JVM源码的角度更加深入,层层剥开synchronized的面纱。 在进入正题之前,肯 阅读全文