随笔分类 -  Java多线程

摘要:@ 背景 相信大部分人在看AQS的时候都能看到注释上有这么一段话: The wait queue is a variant of a "CLH" (Craig, Landin, and Hagersten) lock queue. 为了更好的理解AQS中使用锁的思想,所以决定先好好理解CLH锁。 在 阅读全文
posted @ 2020-07-19 10:48 Mr靖哥哥 阅读(765) 评论(0) 推荐(0)
摘要:预备知识 Java线程的生命周期 概览 本文探究一下Java最基础的机制之一:线程同步 我们先讨论一些并发相关的术语和方法论,接着会提供一个简单例子来处理并发问题,可以帮助我们更好的理解wait()和notify()方法。 线程同步 多线程环境下,每个线程都可能去修改相同资源,如果线程没有被较好的管 阅读全文
posted @ 2020-07-18 11:20 Mr靖哥哥 阅读(374) 评论(0) 推荐(0)
摘要:概览 Java语言中,多线程是由线程的核心概念驱动的,而线程的生命周期会经历以下的不同状态。 Java java.lang.Thread类包含了一个静态类State,它定义了线程的状态,在任意一个时间点上,线程只可能是其中的一个状态,我们接下来逐一讨论每个状态。 NEW 新创建且还未被执行的线程 在 阅读全文
posted @ 2020-07-17 15:17 Mr靖哥哥 阅读(279) 评论(0) 推荐(0)
摘要:预备知识 可以先看下我的另一篇文章对于Java中的位掩码BitMask的解释。 1、一个整数在jvm中占用了4个字节,共32bits 2、最高位的bit代表符号位,0为正数、1为负,剩余的31bits则代表数字部分 3、反码加1即为补码 4、对于负数而言,是以补码的形式存储在内存中的。以-7(int 阅读全文
posted @ 2020-07-04 13:21 Mr靖哥哥 阅读(1163) 评论(2) 推荐(0)
摘要:1、概览 当多线程帮助我们提高应用性能的同时,它同时也带来一些问题,本文我们将借助几个小例子看下两个问题,死锁和活锁。 2、死锁 2.1、什么是死锁 死锁发生在当两个或多个线程一直在等待另一个线程持有的锁或资源的时候。这会导致一个程序可能会被拖垮或者直接挂掉,因为线程们都不能继续工作了。 经典的哲学 阅读全文
posted @ 2020-06-23 23:45 Mr靖哥哥 阅读(962) 评论(0) 推荐(0)
摘要:1、概览 本文我们来看下java.lang包中的ThreadLocal,它赋予我们给每个线程存储自己数据的能力。 2、ThreadLocal API ThreadLocal允许我们存储的数据只能被特定的线程``访问。 我们现在存储一个整形并把它和一个特定的线程绑定: ThreadLocal<Inte 阅读全文
posted @ 2020-06-19 23:41 Mr靖哥哥 阅读(208) 评论(0) 推荐(0)