摘要:在前面的文章中,我们已经体验过synchronized的用法,并对锁的概念和原理做了简单的介绍。然而,你可能已经察觉到,有一个概念似乎总是和synchronized、锁这两个概念如影相随,很多人也比较喜欢问它们之间的区别,这个概念就是Monitor,也叫监视器。 阅读全文
posted @ 2021-05-28 10:29 秦二爷 阅读(184) 评论(0) 推荐(0) 编辑
摘要:在前面的文章《一探究竟-如何从synchronized理解Java对象头中的锁》中,我们介绍并体验了JOL工具。虽然JOL很赞,但它的输出对我们不是很友好,如果不借助工具,我们很难直观理解其中的含义。 下面这段代码是对JOL输出的翻译,建议你收藏。代码非我原创,文末已经注明出处。 import or 阅读全文
posted @ 2021-05-27 10:29 秦二爷 阅读(26) 评论(0) 推荐(0) 编辑
摘要:本文将分两个部分,首先你要从Mark Word中认识锁,因为对象锁的信息存在于Mark Word中,其次通过JOL工具实际体验Mark Word的变化。 阅读全文
posted @ 2021-05-27 10:28 秦二爷 阅读(166) 评论(0) 推荐(1) 编辑
摘要:在前面的文章《双刃剑-理解多线程带来的安全问题》中,我们提到了多线程情况下存在的线程安全问题。本文将以这个问题为背景,介绍如何通过使用synchronized关键字解这一问题。 阅读全文
posted @ 2021-05-25 18:19 秦二爷 阅读(219) 评论(2) 推荐(2) 编辑
摘要:在前面的两篇文章中,我们体验了线程的创建,并从OS进程层面认识了线程。现在,我们已经知晓多线程在解决一些场景问题时有特效。 然而,不知你可曾想过,多线程虽然效率很高,但是它却有着你无法回避的并发问题。举个王者中常见的场景,双方10人同时进攻主宰,最后击败主宰的玩家才是真正的赢家,而且只能有一位。所以 阅读全文
posted @ 2021-05-24 17:30 秦二爷 阅读(41) 评论(0) 推荐(0) 编辑
摘要:在前面的《兵分三路:如何创建多线程》文章中,我们已经通过Thread和Runnable直观地了解如何在Java中创建一个线程,相信你已经有了一定的体感。在本篇文章中,我们将基于前面的示例代码,对线程做些必要的说明,以帮助你从更基础的层面认知线程,并为后续的学习打下基础。 一、从进程认知线程 在上世纪 阅读全文
posted @ 2021-05-20 18:11 秦二爷 阅读(56) 评论(0) 推荐(0) 编辑
摘要:从本文开始,我将基于王者中的段位和场景,从青铜、黄金、铂金、砖石、星耀到王者,不同的段位对应不同的难易程度,由浅入深逐步介绍JAVA中的并发编程,并在每周二、四、六持续更新。 在文章的知识体系方面,主要以实践为主,并在实践中穿插理论知识的讲解,而本文将从最简单的线程创建开始。 一、一个游戏场景 在本 阅读全文
posted @ 2021-05-19 10:49 秦二爷 阅读(74) 评论(0) 推荐(1) 编辑