随笔分类 -  JDK源码学习笔记

摘要:首先,整体的UML架构图如下: 1、强引用(默认支持模式) 当内存不足时,JVM开始进行GC(垃圾回收), 对于强引用对象,就算是出现了OOM也不会对该对象进行回收,死都不会收。 强引用是我们最常见的普通对象引用,只要还要强引用指向一个对象,就表明这个对象还活着,垃圾收集器不会碰这种对象。在java 阅读全文
posted @ 2020-01-20 17:53 Simon-Lau 阅读(529) 评论(0) 推荐(1)
摘要:线程池中的工作线程是如何实现线程复用的? 一个线程一般在执行完任务后就结束了,怎么再让他执行下一个任务呢? 当我们往线程池添加任务的时候使用 ThreadPollExcutor 对象的 execute(Runnable command) 方法来完成的。那我们就来看一下这个逻辑部分的代码: 分析到这里 阅读全文
posted @ 2020-01-20 11:09 Simon-Lau 阅读(172) 评论(0) 推荐(0)
摘要:1、线程池简介 1.1 线程池的概念: 线程池就是首先创建一些线程,它们的集合称为线程池。使用线程池可以很好地提高性能,线程池在系统启动时即创建大量空闲的线程,程序将一个任务传给线程池,线程池就会启动一条线程来执行这个任务,执行结束以后,该线程并不会死亡,而是再次返回线程池中成为空闲状态,等待执行下 阅读全文
posted @ 2020-01-19 20:48 Simon-Lau 阅读(281) 评论(0) 推荐(0)
摘要:本文转载自17coding ,于2019年05月22日由 " 苏静 " 发布. 一、Thread与Runable 1、创建线程的两种方法 在java中你怎么创建线程?相信你很快能够想到继承Thread类和实现Runable接口这两种方式。没错,java提供了这两种方式来创建新的线程。网上也有各种文章 阅读全文
posted @ 2020-01-18 11:36 Simon-Lau 阅读(516) 评论(0) 推荐(1)
摘要:写在前边:今天是1月11日,放假的第13天,图书馆已经没人了,学校里的人也越来越少,淅沥的小雨挡不住众学子回家的脚步。昨晚,异乡遇故知,聊了一通有的没的。看到彼此变了很多,庆幸也保留了很多。此去经年,愿故人前途坦荡。自从上了大学之后,慢慢脱离了交际,不想与人交流,仿佛一只自缚的茧。可这也给我留下独立 阅读全文
posted @ 2020-01-11 23:50 Simon-Lau 阅读(319) 评论(1) 推荐(2)
摘要:本文转载自17coding ,于2019年05月31日由 " 苏静 " 发布. 上周对象突然心血来潮说想养个小宠物,我问想养啥她又说随便,你看着办!!!这我真的比较难办啊!但是咱们程序员能有个对象就不错了,还不赶紧宠着,我只能照办咯! 我去到了一家宠物店,半天也没有找到合适的目标。正在我犹豫彷徨之时 阅读全文
posted @ 2020-01-02 21:40 Simon-Lau 阅读(262) 评论(0) 推荐(0)
摘要:ArrayList是我们经常使用到的一个集合类,通过查看其底层源码实现,有利于我们更好的掌握与使用。ArrayList不算多,但是也不算少,挨个看下去也挺费时费力的。所以呢,我打算循序渐进着来,比如这一篇就先看看ArrayList的属性,以及一些常用的方法,例如增、删、改、查。一口吃不成胖子,任重而 阅读全文
posted @ 2019-12-26 00:43 Simon-Lau 阅读(418) 评论(1) 推荐(1)
摘要:1、不安全的Set 上代码: 2、安全的解决方式 使用CopyOnWriteArraySet解决 关于 写时复制技术 , "在这篇博客里写过" ,不再赘述。深入探索一下,看源码: 3、关于HashSet的补充 HashSet底层是什么?看源码: 注释的意思是:创建一个空的HashMap,初始容量是1 阅读全文
posted @ 2019-12-25 13:37 Simon-Lau 阅读(248) 评论(0) 推荐(0)
摘要:1. 不安全的ArrayList 大家都知道ArrayList线程不安全,怎么个不安全法呢?上代码: 为啥呢?看一下 方法的源码: 可以看到仅仅是在扩容和添加操作,并没有任何的线程安全控制。所以在实际的高并发场景下,ArrayList的应用很有局限。 2. 安全的解决方式 2.1 使用Vector解 阅读全文
posted @ 2019-12-25 12:26 Simon-Lau 阅读(848) 评论(0) 推荐(1)
摘要:Synchronized 与Lock的不同之处 1. 用法不一样。synchronized既可以加在方法上,也可以加载特定的代码块上,括号中表示需要锁的对象。而Lock需要显示地指定起始位置和终止位置。synchronzied是托管给jvm执行的,Lock锁定是通过代码实现的。 2. 在性能上来说, 阅读全文
posted @ 2019-10-28 12:19 Simon-Lau 阅读(2041) 评论(0) 推荐(0)
摘要:懒汉模式——线程不安全写法 懒汉模式——线程安全写法 懒汉模式——双重锁检查 饿汉模式 饿汉模式——变种写法 静态内部类 枚举 阅读全文
posted @ 2019-10-24 20:37 Simon-Lau 阅读(192) 评论(0) 推荐(1)