![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java学习
文章平均质量分 95
zhaojiexiong
这个作者很懒,什么都没留下…
展开
-
有三个线程分别打印a、l、i,请用多线程编程实现,在屏幕上循环打印n次alialiali…n由输入行输入
1.synchronizedlock为锁对象,order为1表示线程1可以打印,为2表示线程2可以打印,为3表示线程3可以打印num表示打印的次数public class PrintThread(){ private static Object lock = new Object(); private static volatile Integer order = 1; private static AtomicInteger num = null; pub原创 2020-05-31 11:49:42 · 572 阅读 · 0 评论 -
数组拷贝引发的思考
数组拷贝的三种方式1.引用赋值int[] a = {1,2,3,4,5};int[] b = a;a[0] = -1;System.out.println(b[0]); //-1数组是用堆去保存的,赋值的时候只是把地址拷贝过去,两个引用指向了同一个地址,所以改变任一数组中的值,另一个数组也会出现相应的变化。2.数组遍历赋值int[] arr1 = {1,2,3}...转载 2020-01-14 14:13:09 · 175 阅读 · 0 评论 -
HashMap源码分析
摘要HashMap是Java程序员使用频率最高的用于映射(键值对)处理的数据类型。随着JDK(Java Developmet Kit)版本的更新,JDK1.8对HashMap底层的实现进行了优化,例如引入红黑树的数据结构和扩容的优化等。本文结合JDK1.7和JDK1.8的区别,深入探讨HashMap的结构实现和功能原理。简介Java为数据结构中的映射定义了一个接口java.util.M...转载 2020-05-31 09:49:25 · 365 阅读 · 0 评论 -
java集合之TreeMap源码分析
java集合(6):TreeMap源码分析(jdk1.8)重点:红黑树(一)之 原理和算法详细介绍TreeMap的基本概念:TreeMap集合是基于红黑树(Red-Black tree)的 NavigableMap实现。该集合最重要的特点就是可排序,该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,具体取决于使用的构造方法。这句话是什么意思呢?...转载 2020-05-31 09:50:20 · 216 阅读 · 0 评论 -
ReentrantLock(重入锁)源码分析
简介ReentrantLock的实现不仅可以替代隐式的synchronized关键字,而且能够提供超过关键字本身的多种功能。这里提到一个锁获取的公平性问题,如果在绝对时间上,先对锁进行获取的请求一定被先满足,那么这个锁是公平的,反之,是不公平的,也就是说等待时间最长的线程最有机会获取锁,也可以说锁的获取是有序的。ReentrantLock这个锁提供了一个构造函数,能够控制这个锁是否是公平的。...转载 2020-05-31 09:53:11 · 160 阅读 · 0 评论 -
Java ArrayList类源码分析
前言 在前面的学习集合中只是介绍了集合的相关用法,我们想要更深入的去了解集合那就要通过我们去分析它的源码来了解它。希望对集合有一个更进一步的理解! 既然是看源码那我们要怎么看一个类的源码呢?这里我推荐的方法是: 1)看继承结构 看这个类的层次结构,处于一个什么位置,可以在自己心里有个大概的了解。 2)看构造方法 在构造方法中,看做了哪些事...转载 2020-05-31 09:52:41 · 311 阅读 · 0 评论 -
LinkedList 源码分析
本节我们来学习一下LinkedList,LinkedList相对ArrayList而言其使用频率并不是很高,因为其访问元素的性能相对于ArrayList而言比较慢,至于原因我们下面讲开始讲解,本节重点是了解其内部的结构,会简单实现一个简单的LinkedList 即可。一、LinkedList的简单使用任何代码在深入分析前,首先需要会使用,因此我们先看下基本的使用列子:public c...转载 2020-05-31 09:52:12 · 194 阅读 · 0 评论 -
Java 排序之快速排序
以数据结构与算法分析(Java语言描述)中2.26小题为例进行解析大小为N的数组A,其主元素是一个出现超过N/2的元素(从而这样的元素之多有一个)。例 {3,3,4,2,4,4,2,4,4}中有一个主元素4,而数组{3,3,4,2,4,4,2,4}没有主元素现在我们假设数组中一定有主元素,下面将主元素找出来1.求已知有主元素的数组的主元素,利用快速排序算法将数组排序,找到其中间元素,复...转载 2019-09-22 18:03:16 · 163 阅读 · 0 评论 -
Java并发编程实战-CopyOnWriteArrayList源码分析
参考:https://www.cnblogs.com/huangjuncong/p/9160713.htmlhttps://www.iteye.com/blog/caoyaojun1988-163-com-1754686Java.util.concurrent包中只有CopyOnWriteArrayList一种并发LIst,且这是一个线程安全的ArrayList,对齐进行修改操作和元素迭代...原创 2020-05-31 09:51:51 · 398 阅读 · 0 评论 -
ConcurrentHashMap底层实现原理(JDK1.8)源码分析
前言面试中常常问到Hashtable、HashMap和ConcurrentHashMap的区别。大家都知道HashMap是线程不安全的,Hashtable和ConcurrentHashMap是线程安全的。Hashtable保证线程安全的方法,基本都是在操作集合的方法上加synchronized关键字,我们有必要知道ConcurrentHashMap底层实现和如何保证线程安全性。Concurren...转载 2020-05-31 09:54:59 · 764 阅读 · 0 评论 -
Java集合之LinkedBlockingQueue源码分析
问题(1)LinkedBlockingQueue的实现方式?(2)LinkedBlockingQueue是有界的还是无界的队列?(3)LinkedBlockingQueue相比ArrayBlockingQueue有什么改进?(4)LinkedBlockingQueue 内部是如何使用两个独占锁 ReentrantLock 以及对应的条件变量保证多线程先入队出队操作的线程安全?为什...转载 2020-05-31 09:22:07 · 260 阅读 · 0 评论 -
Java集合之ArrayBlockingQueue源码分析
ArrayBlockingQueue是Java并发框架中阻塞队列的最基本的实现,分析这个类就可以知道并发框架中是如何实现阻塞的。它是数组实现的线程安全的有界的阻塞队列。线程安全是指,ArrayBlockingQueue内部通过“互斥锁”保护竞争资源,实现了多线程对竞争资源的互斥访问。而有界,则是指ArrayBlockingQueue对应的数组是有界限的。 阻塞队列,是指多线程访问竞争资源时,当竞争...转载 2020-05-31 09:20:25 · 171 阅读 · 0 评论