Java并发编程
清新哥哥
暴走牛牛
展开
-
Java并发之AQS详解
Chttps://www.cnblogs.com/waterystone/p/4920797.html转载 2021-06-04 15:46:34 · 74 阅读 · 0 评论 -
JUC包中分段锁的理解
前言:在分析ConcurrentHashMap的源码的时候,了解到这个并发容器类的加锁机制是基于粒度更小的分段锁,分段锁也是提升多并发程序性能的重要手段之一。 在并发程序中,串行操作是会降低可伸缩性,并且上下文切换...转载 2018-09-12 15:43:48 · 659 阅读 · 0 评论 -
LockSupport类
LockSupportLockSupport看名字叫锁支持,这个玩意的功能跟wait和notify很像,它也是可以阻塞一个线程,然后又可以恢复一个线程,不过有个比较大的区别就是,wait让线程阻塞前,必获取到同步锁。而LockSupport这个哥们比较牛逼,随时随地随便阻塞当前线程,你给它一个线程它就敢让那个线程阻塞。它是通过park()方法阻塞当前线程的...转载 2018-08-29 19:20:08 · 2427 阅读 · 0 评论 -
ReentrantLock类
ReentrantLockReentrantLock是一个互斥锁,也是一个可重入锁(Reentrant就是再次进入的意思)。ReentrantLock锁在同一个时间点只能被一个线程锁持有,但是它可以被单个线程多次获取,每获取一次AQS的state就加1,每释放一次state就减1。还记得synchronized嘛,它也是可重入的,一个同步方法调用另外一个同步方法是没有问题的。在使用上无非就...转载 2018-08-29 19:14:32 · 13112 阅读 · 1 评论 -
多线程交替打印ABC的多种实现方法
一、题目描述建立三个线程A、B、C,A线程打印10次字母A,B线程打印10次字母B,C线程打印10次字母C,但是要求三个线程同时运行,并且实现交替打印,即按照ABCABCABC的顺序打印。二、Synchronized同步法1、基本思路使用同步块和wait、notify的方法控制三个线程的执行次序。具体方法如下:从大的方向上来讲,该问题为三线...转载 2018-08-29 19:09:50 · 4094 阅读 · 1 评论 -
JUC之锁——Lock与AQS
前言在详解JUC之锁——概述(01)中我对JUC中的锁进行了概述,下面我就介绍一下它们的根基Lock接口和AQS类Lock看名字就知道Lock接口就是JUC中锁的顶级接口,支持语义不同的锁规则,比如说公平锁和非公平锁,独占锁(也可以叫互斥锁)和共享锁等。它最主要的两个方法就是lock()和unlock(),一看就知道是获取锁和释放锁。还有一...转载 2018-08-29 16:24:03 · 2955 阅读 · 0 评论 -
synchronized底层原理
一直想把这个特别重要的关键词的底层实现搞明白。(当然现在也没有完全明白,如果有错误以后修改这篇文章) 首先,这个关键词synchronize可以说是个语法糖,它的具体用法网上很多博客都讲的比较明了了。简而言之就是对一个对象“加锁”。首先,找个地方的对象不一定是堆里面的类的实例对象,也有可能是方法区的类对象。其次,这个关键词修饰的代码块的加锁过程有两个,进入的时候尝试获得锁(java...转载 2018-08-29 15:35:20 · 2547 阅读 · 0 评论 -
JAVA锁的膨胀过程和优化
转载自:https://www.cnblogs.com/dsj2016/p/5714921.html 感谢原博主!此文说的很详细! 首先说一下锁的优化策略。1,自旋锁自选锁其实就是在拿锁时发现已经有线程拿了锁,自己如果去拿会阻塞自己,这个时候会选择进行一次忙循环尝试。也就是不停循环看是否能等到上个线程自己释放锁。这个问题是基于一个现实考量的:很多拿了锁的线程...转载 2018-08-29 15:22:56 · 2331 阅读 · 0 评论 -
JUC包中原子类使用及其原理
转载自: https://blog.csdn.net/timheath/article/details/71441008 收益匪浅,感谢! 前言我在详解JUC之原子类概述这篇文章中介绍了一下原子操作和JUC包下的原子类的类型,现在我就来介绍一下这些原子类。操作基本类型的原子类操作基本类型的原子类有3个AtomicInteger:操作int...转载 2018-08-29 14:34:31 · 4187 阅读 · 0 评论 -
JUC Executor框架详解
Executor 框架是 juc 里提供的线程池的实现。前两天看了下 Executor 框架的一些源码,做个简单的总结。 线程池大概的思路是维护一个的线程池用于执行提交的任务。我理解池的技术的主要意义有两个:1.  资源的控制,如并发量限制。像连接池这种是对数据库资源的保护。2.  资源的有效利用,如线程复用,避免频繁创建线程...转载 2018-08-28 23:09:54 · 2401 阅读 · 0 评论 -
Java 线程池的原理
读完本文你将了解:什么是线程池线程池的处理流程保存待执行任务的阻塞队列创建自己的线程池JDK 提供的线程池及使用场景1.newFixedThreadPool2.newSingleThreadExecutor3.newCachedThreadPool4.newScheduledThreadPool两种提交任务的方法executesubm...转载 2018-08-28 23:07:44 · 2001 阅读 · 0 评论 -
JAVA中的并发编程学习导学
Java基础、并发、JVM、算法、数据库、一些框架、分布式集群依旧是面试的主要考察点。 面试中并发类问题的准备和学习现状关于对并发的学习和理解,通过和许多学员沟通及大家在课程群里的反馈,总结一下,主要包含以下几种:完全不知道并发的存在 知道并发要学,但是不知道该学习什么 知道并发重要,自己买相关书籍学,但是看完了还是懵懵懂懂 知道并发重要,自己查资料学了一些,许多都学会了,但...原创 2018-08-30 19:34:50 · 2340 阅读 · 0 评论 -
java中Executor框架之ThreadPoolExcutor和ScheduledThreadPoolExecutor浅析(多线程编程之三)
转载自: https://blog.csdn.net/javazejian/article/details/50890554 java多线程-概念&创建启动&中断&守护线程&优先级&线程状态(多线程编程之一)java多线程同步以及线程间通信详解&消费者生产者模式&死锁&Thread.join()(...转载 2018-08-30 17:42:45 · 6070 阅读 · 0 评论 -
Java多线程编程:Callable、Future和FutureTask浅析(多线程编程之四)
转载自: https://blog.csdn.net/javazejian/article/details/50896505 java多线程-概念&创建启动&中断&守护线程&优先级&线程状态(多线程编程之一)java多线程同步以及线程间通信详解&消费者生产者模式&死锁&Thread.join()(...转载 2018-08-30 17:02:27 · 2311 阅读 · 0 评论