随笔分类 - Java多线程
关于Java多线程的一些笔记
摘要:什么是适配器模式 网上已有很多的教程,不细讲了。可以参考:[五分钟了解设计模式(3) 适配器模式]( https://www.cnblogs.com/kubidemanong/p/9609856.html) 在适配器模式中,一定要识别清楚,Target Adaptee Adapter分别是哪些类或接
阅读全文
摘要:最近阅读了JDK线程池ThreadPoolExecutor的源码,对线程池执行任务的流程有了大体了解,实际上这个流程也十分通俗易懂,就不再赘述了,别人写的比我好多了。 不过,我倒是对线程池是如何回收工作线程比较感兴趣,所以简单分析了一下,加深对线程池的理解吧。 那么,就以JDK1.8为例分析吧。 1
阅读全文
摘要:1. 问题 最近有同事问了我一个问题,在Java编程中,当有一条线程要获取ReentrantReadWriteLock的读锁,此时已经有其他线程获得了读锁,AQS队列里也有线程在等待写锁。由于读锁是共享锁,当前线程是马上获得读锁,还是排队?如果是马上获得读锁,那岂不是阻塞的等待写锁的线程有可能一直(
阅读全文
摘要:最近看到一句话:内部锁synchronized不会造成锁泄漏(Lock Leak)。 锁泄漏是指一个线程获得某个锁以后,由于程序的错误、缺陷致使该锁一直没法被释放而导致其他线程一直无法获得该锁的现象。(摘自《Java多线程编程实战指南(核心篇)》--黄文海) 很好奇JVM是怎么保证的。 我想,Jav
阅读全文
摘要:贴代码啦 按照代码的注释操作,控制台的输出如下,观察WaitThread的变化。 testWait(): testTimedWait():
阅读全文
摘要:1. 双重校验锁实现单例的问题 在延迟实现单例时,一般代码形式如下: 看起来很简单,但这里有个容易忽略的点,就是instance变量,需要用volatile修饰。 为什么?如果不加的话会有什么问题呢? 让我们把目光聚焦到第11行,初始化instance变量。这一行代码可以分解为如下3行伪代码。 上面
阅读全文
摘要:1. synchronized同步方法 1) synchronized修饰方法,表示方法是同步的,当某线程进入并拿到当前整个对象的锁时 a. 其他synchronized方法排队等锁 b. 非synchronized方法可异步执行 示例代码(折叠) 1 package com.khlin.threa
阅读全文