Lock
文章平均质量分 91
Smallc0de
勤学如春起之苗,不见其增,日有所长;辍学如磨刀之石,不见其损,日有所亏。
展开
-
Java 线程知识笔记 (十二) 线程之间数据交互与顺序实例
前言考虑到之前写的博客太过于偏重理论性,这篇博客是Java线程的一个小的应用实例。我们的例子中会应用到线程中的wait,notifyAll,synchronized,volatile等等线程方法和关键字,来实现这个功能,也可以更好地让大家体会到这些线程相关的理论内容,在实际运行中有什么样子的表现。最后也会用Semaphore去从另一个思路实现相同的功能,用来提供另一种思路。更多线程知识内容请点击【Java 多线程和锁知识笔记系列】场景场景大意是:现在有三个线程,线程t1输出A,线程t2输出B,线程t3原创 2021-04-13 10:20:53 · 245 阅读 · 0 评论 -
Java 线程知识笔记 (十一) 实例区分synchronized锁住this、对象与类锁
笔者在【synchronized 用法与原理分析】一文中详细的讲解了synchronized的原理和用法,但是最近发现其实深究起来有些细微的方面还是不够牢固,比如synchronized锁住this,锁住普通对象,类锁等等,在实际使用中的具体表现并没有一个直观的展示。因此这篇博客就是对这部分内容进行一个展示,从实例出发来探究synchronized锁的种种表现,希望各位对synchronized有一个立体的认识。原创 2021-04-10 17:13:42 · 693 阅读 · 0 评论 -
Java 线程知识笔记 (十) 常用的锁工具
本篇简单的介绍了ReentrantLock,ReentrantReadWriteLock,CountDownLatch,CyclicBarrier,Semaphore等等官网解释,以及使用场景和例子原创 2021-01-25 18:27:13 · 426 阅读 · 0 评论 -
Java 线程知识笔记 (九) 并发框架AQS详解
之前说锁的升级的时候,说到了自旋锁会空转几次尝试等待获取资源,其实这一系列的动作是有一个规范的这个规范叫做同步发生器AbstractQueuedSynchronizer ,简称AQS。同步发生器是用来构建锁用的,可以说是Java中同步组件的基础,在Java JDK的JUC包中:java.util.concurrent。我们常用的ReentrantLock,Semaphore等等用的都是这样一个架构,可以说是这些Lock工具的一个基础。原创 2021-01-22 17:01:04 · 217 阅读 · 0 评论 -
Java 线程知识笔记 (八) 单例模式的演变
前言很多同学都在学习Java的过程中听说过单例模式,或者在面试中遇到过类似的问题。单例模式算是老生常谈的问题了,其实就是一句话能说清楚事情:所谓单例模式,就是实例化过程中只实例化一次。无论有多少线程来访问,都只实例化一次,多个线程调用已经实例化好的对象,而不是重新创建一个。虽说简单但是还是有不少细节要深究一些,比如前面有些文章里说的DCL就是单例模式的实例之一。为什么要有单例模式既然要说单例模式还是从零开始,设想这样一个场景:远程办公,有一个任务文档要写,很多同事必然要打开这个文档去输入内容,如果给每原创 2021-01-20 21:59:36 · 187 阅读 · 0 评论 -
Java 线程知识笔记 (七) volatile实现机制
前言在任何编程语言中,多线程操作同一个数据都会带来数据不一致的问题,这是由于在多线程的情况下CPU分配时间片并不是按照线程创建顺序去分配的,具有一定的随机性。一个任务被首先创建出来,并不意味着这个特定的任务一定会首先执行,为了解决并发状态下数据不一致的问题,就有了Lock、synchronized、volatile等等一系列的解决方法。在这一系列之前的博客【Java 线程知识笔记 (五) synchronized 用法与原理分析】中我们已经详细的解析过synchronized实现原理和使用方法,本篇则会侧原创 2021-01-19 21:57:09 · 741 阅读 · 1 评论 -
Java 多线程和锁知识笔记系列
说到Java的运行,就离不开进程和线程,这两个概念其实也是所有编程语言的核心。无论是什么语言,归根结底就是在操作CPU,让CPU分配相应的计算资源给应用程序。而线程就是CPU能够调度和分派的基本单元,多个线程组合在一起做一件事情就变成了进程。既然有了多线程,那么如何保证数据一致性,保证线程有序性就成了Java编程中的重中之重,因此又有了锁的概念。可以说线程和锁是Java编程中基础的基础,但是由于其不好理解因此很少会被当作Java的基础去介绍和讲解。原创 2021-01-18 16:26:48 · 408 阅读 · 0 评论 -
Java 线程知识笔记 (六) 锁与锁的状态升级
本篇主要说了锁的概念,锁在对象头中格式,锁的状态,自旋锁,锁的升级等等内容。原创 2021-01-18 16:04:21 · 207 阅读 · 0 评论 -
Java 线程知识笔记 (五) synchronized 用法与原理分析
说到Java就必然会考虑到线程的问题,无论工作中学习中有没有直接接触过多线程开发,手写过线程调用,在这个底层已经到了多核多缓存的硬件时代,多线程是任何码农都绕不过的一个事情。只要有线程,就会有并发的现象,也同时会产生数据不一致。那么对于需要使用同一个数据的两个线程,就会产生冲突,那么就引出了锁的概念。锁有很多种本篇会针对性的说下synchronized这个关键字是如何保证线程的有序进行。原创 2021-01-18 15:44:34 · 373 阅读 · 2 评论