synchronized 和 ReentrantLock 的实现原理是什么?它们有什么区别?

在 JDK 1.5 之前共享对象的协调机制只有 synchronized 和 volatile,在 JDK 1.5 中增加了新的机制 ReentrantLock,该机制的诞生并不是为了替代 synchronized,而是在 synchronized 不适用的情况下,提供一种可以选择的高级功能。我们本
2020年06月02日 332次浏览

详解 ThreadPoolExecutor 的参数含义及源码执行流程?

线程池是为了避免线程频繁的创建和销毁带来的性能消耗而建立的一种池化技术,他是把已经创建的线程放入 “池” 中,当有任务来时就可以重用已有的线程,无需等待创建的过程,这样就可以有效提高程序的响应速度。但如果要说线程的活一定离不开ThreadPoolExecutor,在阿里巴巴《Java开发手册》中这样
2020年04月16日 394次浏览

线程的状态有哪些?它是如何工作的?

线程(Thread)是并发编程的基础,也是程序执行的最小单元,它依托进程而存在。一个进程中可以包含多个线程,多线程可以共享一块内存空间和一组系统资源,因此线程之间的切换更加节省资源、更加轻量化,也因此被称为轻量级的进程。当然,线程也是面试中常被问到的一个知识点,是程序员必备的基础技能,使用它可以有效
2020年04月16日 333次浏览

HashMap 底层实现原理是什么

HashMap是使用频率最高的类型之一,同时也是面试经常被问到的问题之一,这是因为HashMap的知识点有很多,同时它又属于Java基础知识的一部分,因此在面试中经常被问到。
2020年04月14日 399次浏览

String 是如何实现的?它有哪些重要的方法?

回答JDK 版本 1.8 ,String 内部实际存储结构为 char 数组,源码如下:public final class String implements java.io.Serializable, Comparable<String>, CharSequence {
2020年04月14日 368次浏览

自己写一个Java的LinkedList

思路要求:LinkedList类,Node,Iterator,泛型成员变量:头节点、尾节点、数量、修改次数成员方法:doClear、size、isEmpty、add、remove、get、set代码classMyLinkedList<AnyType>implementsIterable&
2020年03月21日 423次浏览

自己手写一个Java的ArrayList

思想基本要求:需要使用泛型,很多类可以形成列表。可迭代的成员变量:默认容量,数量,一个泛型数组成员方法:构造方法、clear、size、isEmpty、get、set、add、remove、ensureCapacity代码classMyArrayList<AnyType>implemen
2020年03月21日 402次浏览