首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

java进阶|java队列源码分析

今天我要分享的是java里面比较常见的数据结构队列的源码分析,队列,先进先出模式,即FIFO的特点,日常生活中队列的特点也随处可见,超市购物排队,餐厅排队买饭等一系列都满足了队列的先进先出的特点,java...也不是,主要是之前我自己分析了ArrayList,LinkedList以及Stack的源码文章了,到这里就理所应当的应该分析队列的这种数据结构了,满足一下学生时代心心念的数据结构吧。...说了这么多,接下来就逐渐去分析队列的源码吧,写到这时下起了小雨,对,这个时间段是晚上十点左右,这篇文章是自己继五一放假来的第一篇文章,自己玩着玩着手机就突然想起了要写这篇文章了,索性就过来写了,要是学生时代这么努力多好...关于读源码,如何进行梳理整个过程,每个人都有着自己的一套,在这里我就以自己的一套来进行分析好了。...十,到这里就结束了自己对队列的源码分析,其实你会发现我这里没有对队列的每一个方法进行分析,其实都差不多,这里起到一个开头作用就可以了,下面的每个分析方法都差不多。

70920

java之CopyOnWriteArrayList源码分析

今天我们来分享一下与java相关的CopyOnWriteArrayList的技术点,可能有的人是第一次见到这个,也有可能早已了解,今天我们就来对其源码进行分析,来熟悉和了解一下什么是写时复制容器。...package com.wpw.asyncthreadpool; import java.util.concurrent.CopyOnWriteArrayList; public class CopyOnWriteArrayListTest...好了,这里的clear()方法的程序代码流程我们就分析完了。 集合常用的方法判空操作也是很常用的,接下来我们继续对集合提供的isEmpty()方法进行分析了。...我们看下下面的这个方法好了,lastIndexOf()方法,这个方法的程序代码我们还是继续分析下好了,其实在这里说下,这篇文章很长,因为我要对每一个方法都要进行分析一下,看下它提供了哪些,这样我们在使用集合的时候可以针对具体情况使用不同的方法去解决问题...() == Object[].class) setArray(cs); else { //若原有的集合操作不为空,先通过工具类拷贝一个数据出来

29210

JAVA进阶:String源码分析

JAVA进阶:String源码分析 String结构 /*Strings are constant; their values can not be changed after they are created.Stringbuffers...Forexample:*/public final class String implements java.io.Serializable, Comparable, CharSequence...源码里可以看到String被final修饰并继承了三个接口 源码注释也说到字符串是不变的; 它们的值在创建后无法更改.Stringbuffers支持可变字符串。...StringBuilder StringBuilder和Stringbuffer这两个类的方法都很想一样,因此我们就那StringBuilder的源码分析 等下再去看三者之间的关系和不同 结构和构造...} return false; } 基本数据类型比较值引用数据类型比较地址值 (对象的引用,在堆空间,String在字符串池,newString在堆空间) 根据下面案例分析一下源码

1.1K20

java进阶|ArrayBlockingQueue源码分析

其实分析这篇文章的时候自己在想,java这门高级语言真的很好,它的特性也给了自己很多的思考,ArrayBlockingQueue源码分析完之后,我应该不在去分析java源码了,已经写好的内容,自己会输出和分享出来...一般工作中我们都是面向业务进行编写代码的,是的,调用javaAPI进行数据操作,所以分析源码算是自己的一个喜好吧,不然我也不会大半夜不睡觉在分析自己喜欢的java语言吧,在18年下半年的时候自己就早已去分析过一部分数据结构了...这也是最初自己为什么在公众号里面用简单的文字去描述一个技术点,有的人乐于分析spring源码,其它框架的源码,但是我自己不去分析这样的框架,至少目前是,因为我水平达不到,以及我工作中也用不到去分析这样的源码...这次要分析的ArrayBlockingQueue源码或许是我对之前写的线程池的理解有所帮助一点,主要是为了回顾一下队列的使用,之前好像在分析队列的源码时自己好像说过队列在工作中没有用到过,好像线程池里面用到了队列...java8的用法,这个真的很好用,自己也分享了两篇关于java8的操作,这可是工作中常用的操作哈。

35210

java进阶|PriorityQueue源码分析

0x01,闲聊一下 本来今天(2020/06/xx)是打算分析一下ArrayBlockingQueue队列的源码的,但是看了半个多小时吧,还有一点没有想明白,索性就没有继续以文章的方式输出了,但是看了ArrayBlockingQueue...的源码,倒是觉得它就是一个线程安全的队列,所以后面打算分享一下吧,谁让当时理解不了那个知识点呢,后面再说了,后面自己就写了java的等待通知机制的文章和限流的文章,所以这是今天写的第三篇文章了,好了,好了...,不闲扯了,这里我就来分析了优先级队列的源码,因为我理解了里面的内容,不写出来总觉得没有掌握这个内容,其实也不是,可能是写文章写多了,不写总觉得不习惯,是的,不习惯。...0x02,步入主题 一般,我在分析源码的时候总是从构造函数入手,想起构造函数还是想起了要写一篇如何创建java对象的文章吗,不知道,还是在自己的内心沉淀一段时间再说吧,毕竟写文章是需要很花费一个人很长的时间的...,这是第15篇源码分析的文章,最近也在思考一下这两年的点点滴滴,如果自己有时间以及自己如果思考的有意义的话语,自己会单独写一篇这两年的点点滴滴分享一下,或许对于自己也是一个总结。

31820

java之StopWatch源码分析

System.out.println("统计计算0~1000000000相加的总和" + sum + "耗时时间为:" + (endTime - startTime) + "ms");     } 我们先分析这段代码涉及的内容吧...想了解本地方法栈和java方法栈的内容可以先看下这两篇文章java虚拟机,应该了解一点点,另外一篇是java内存区域划分详解,后面的一篇是对前面内容的详细描述吧,希望可以帮助到你,喜欢的可以关注此公众号...我们继续说下另外一种计时方法吧,StopWatch,这是spring框架提供的一个工具类,只要你使用了spring框架,就无需导入其它jar包了,好了,我们看下它的常见用法吧,继续按照我们一贯的风格,先将代码看下...下面我们继续看下StopWatch工具类提供的常用方法吧 我们看下stopWatch方法做了什么,和原来的有什么不一样的,除了多了给当前的执行 任务起了一个有明确含义的任务名,在计算时间时任然时调用的是...下面再分析一下这个方法了,在我们的示例中,我们使用了下面的这个方法prettyPrint()进行信息格式友好的输出。

90210

java之CopyOnWriteArraySet源码分析

上篇我们分享了CopyOnWriteArrayList的源码分析,这次我们打算来分享 CopyOnWriteArraySet的源码分析,当自己整理了一下源码流程时发现这篇文章没什么写头,底层是在基于利用...package com.wpw.asyncthreadpool; import java.util.concurrent.CopyOnWriteArraySet; public class CopyOnWriteArraySetTest...我们看下在CopyOnWriteArrayList源码里面我们没有介绍到的containsAll()方法,由于这篇讲的是set,但是底层还是使用的是CopyOnWriteArrayList,所以我们这里继续分析...destPos, int length); 我们看上面的方法修饰符是由native关键字修饰的,所以它是在本地方法栈执行的,不是在java...到这里我们的分享内容就结束了,今天写了CopyOnWriteArrayList的姊妹篇 CopyOnWriteArraySet的源码分析,其实底层实现是基于CopyOnWriteArrayList的,喜欢文章的可以关注公众号

48620
领券