首先分布式锁和我们平常讲到的锁原理基本一样,目的就是确保,在多个线程并发时,只有一个线程在同一刻操作这个业务或者说方法、变量。 在一个进程中,也就是一个jvm 或者说应用中,我们很容易去处理控制,在jdk java.util 并发包中已经为我们提供了这些方法去加锁, 比如synchronized 关 ...
分类:
其他好文 时间:
2019-03-08 18:36:01
阅读次数:
131
java并发包&线程池原理分析&锁的深度化 并发包 同步容器类 Vector与ArrayList区别 1.ArrayList是最常用的List实现类,内部是通过数组实现的,它允许对元素进行快速随机访问。数组的缺点是每个元素之间不能有间隔,当数组大小不满足时需要增加存储能力,就要讲已经有数组的数据复制 ...
分类:
编程语言 时间:
2019-03-04 09:32:30
阅读次数:
158
在前面的文章中,我们介绍了太多的基本原则、技术和新概念。在本文中,我们可以在Java并发包的基础上轻松理解基于这些基本原理的三个框架工具类。 因此,由于它是一个工具类,它必须与特定的场景密不可分,所以彼此之间没有好坏之分,只有谁更合适。 信号量应用于哪种使用场景?让我们举一个流行的例子: 如果有停车 ...
分类:
其他好文 时间:
2019-02-06 14:36:51
阅读次数:
112
在随后的博文中我会继续分析并发包源码,在这里,得分别谈谈容器类和迭代器及其源码,虽然很突兀,但我认为这对于学习Java并发很重要; ConcurrentModificationException: JavaAPI中的解释:当不允许这样的修改时,可以通过检测到对象的并发修改的方法来抛出此异常。一个线程 ...
分类:
编程语言 时间:
2019-02-02 12:51:48
阅读次数:
209
在java并发包java.util.concurrent中,除了重入锁ReentrantLock外,读写锁ReentrantReadWriteLock也很常用。在实际开发场景中,在使用共享资源时,可能读操作远远多于写操作。这种情况下,如果对这部分共享资源能够让多个线程读的时候不受阻塞,仅仅在写的时候 ...
分类:
其他好文 时间:
2019-02-01 14:55:10
阅读次数:
156
利用多线程实现报表的高效导出 多线程、线程池、并发包每当谈起这些词汇,可能不是在面试就是在准备面试的路上了。 有句话叫“面试造航母,工作拧螺丝“,确实很多情况下我们是用不到这些东西的,但是学好这些东西对我们的日常工作也可能会产生意想不到的好处的。 临近年末,收拾了下手头工作,趁着最后两天有些闲暇,准 ...
分类:
编程语言 时间:
2019-01-31 20:46:35
阅读次数:
239
在并发编程中,除了synchronized关键字,java并发包中java.util.concurrent.locks中的ReentrantLock和ReentrantReadWriteLock也是常用的锁实现。本篇从源码方面,分析一下重入锁ReentrantLock的原理。 先说一下什么的重入锁: ...
分类:
其他好文 时间:
2019-01-31 00:24:18
阅读次数:
232
一.概述 在并发包之中出现了ThreadFactory接口,如下: 从上面基本的定义中可以看出,就是将一个线程的执行单元包装成为一个线程对象,我们一般会指定这个线程的一些属性, 比如线程的名称,线程的优先级,线程是否是守护线程等线程. 常见的,我们创建一个线程工厂都是实现这个接口,创建一个类,通过这 ...
分类:
其他好文 时间:
2019-01-29 10:57:09
阅读次数:
191
以前写过介绍HashMap的文章,文中提到过HashMap在put的时候,插入的元素超过了容量(由负载因子决定)的范围就会触发扩容操作,就是rehash,这个会重新将原数组的内容重新hash到新的扩容数组中,在多线程的环境下,存在同时其他的元素也在进行put操作,如果hash值相同,可能出现同时在同 ...
分类:
编程语言 时间:
2019-01-27 19:01:30
阅读次数:
150
以前写过介绍HashMap的文章,文中提到过HashMap在put的时候,插入的元素超过了容量(由负载因子决定)的范围就会触发扩容操作,就是rehash,这个会重新将原数组的内容重新hash到新的扩容数组中,在多线程的环境下,存在同时其他的元素也在进行put操作,如果hash值相同,可能出现同时在同 ...
分类:
其他好文 时间:
2019-01-25 19:17:27
阅读次数:
167