自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

程序员志哥的博客

一个仍在一线努力coding的码农

  • 博客(44)
  • 收藏
  • 关注

原创 集合系列(二十) -HashMap多线程下使用时会死循环详解

关于这个问题,很多年前,在淘宝内网里就有很多的程序员发过这种帖子说一个CPU 被100%了,原因竟是多线程环境下使用 HashMap 造成的死循环,并且这个事发生了很多次。

2024-04-11 13:48:46 756

原创 集合系列(十九) -List与数组互转操作介绍

通过 Arrays.asList(strArray) 方式,将数组转换List,但不能对List增删,只能查改,否则抛异常。

2024-04-11 13:46:12 506

原创 集合系列(十八) -List集合移除元素的坑点总结

List集合移除元素的坑点总结

2024-04-01 10:06:11 582

原创 集合系列(十七) -List集合移除元素相关的操作介绍

在实际开发的时候,我们经常会碰到这么一个困难:一个集合容器里面有很多重复的对象,里面的对象没有主键,但是根据业务的需求,实际上我们需要根据条件筛选出没有重复的对象。

2024-04-01 10:04:25 783

原创 集合系列(十六) -集合知识回顾整理

在 Java 集合框架中,数据结构和算法可以说在里面体现的淋淋尽致,这一点可以从我们之前对各个集合类的分析就可以看的出来,如动态数组、链表、红黑树、Set、Map、队列、栈、堆等!

2024-03-27 11:10:46 925

原创 集合系列(十五) -CopyOnWriteArrayList详解

CopyOnWriteArrayList 实际上是 ArrayList 一个线程安全的操作类!

2024-03-27 11:00:04 1273

原创 集合系列(十四) -ConcurrentHashMap详解

下面我们一起来聊聊 ConcurrentHashMap 这个类!

2024-03-25 11:10:25 860

原创 集合系列(十三) -红黑树实现分析详解

JDK1.8最重要的就是引入了红黑树的设计(当冲突的链表长度超过8个的时候),为什么要这样设计呢?好处就是避免在最极端的情况下冲突链表变得很长很长,在查询的时候,效率会非常慢。

2024-03-25 11:07:42 725

原创 集合系列(十二) -PriorityQueue详解

在上一章节中,陆续的介绍到 ArrayDeque 和 LinkedList 的数据结构和算法实现,今天咱们来介绍一下PriorityQueue 这个类,一个特殊的优先级队列。如果有理解不当之处,欢迎指正。

2024-03-21 09:26:42 762

原创 集合系列(十一) -ArrayDeque详解

关于 LinkedList 实现类,在之前的文章中已经有所介绍,今天咱们来介绍一下 ArrayDeque 这个类,如果有理解不当之处,欢迎指正。

2024-03-21 09:25:48 720

原创 集合系列(十) -Set接口详解

关于 Set 接口,在实际开发中,其实很少用到,但是如果你出去面试,它可能依然是一个绕不开的话题。

2024-03-20 09:54:56 1280

原创 集合系列(九) -Properties详解

在上一章节中,咱们介绍到 Hashtable 的数据结构和算法实现,在 Java 中其实还有一个非常重要的类Properties,它继承自 Hashtable,主要用于读取配置文件。

2024-03-20 09:53:10 960

原创 集合系列(八) -Hashtable详解

本文主要从数据结构和算法层面,探讨 Hashtable 的实现,如果有理解不当之处,欢迎指正。

2024-03-19 09:53:30 800

原创 集合系列(七) -WeakHashMap详解

本文主要从数据结构和算法层面,探讨 WeakHashMap 的实现。

2024-03-19 09:52:22 788

原创 集合系列(六) -IdentityHashMap详解

应该有很多人不知道 IdentityHashMap 的存在,其中不乏工作很多年的 Java 开发者,本文主要从数据结构和算法层面,探讨 IdentityHashMap 的实现。

2024-03-18 11:03:15 983

原创 集合系列(五) -TreeMap详解

本文主要从数据结构和算法层面,探讨TreeMap的实现。

2024-03-18 11:01:25 1385

原创 集合系列(四) -LinkedHashMap详解

本文主要从数据结构和算法层面,探讨LinkedHashMap的实现。

2024-03-15 13:34:16 854

原创 集合系列(三) -HashMap详解

关于HashMap,一直都是一个非常热门的话题,只要你出去面试,我保证一定少不了它!

2024-03-15 11:52:41 1009

原创 集合系列(二) -List接口详解

List 的数据结构就是一个序列,存储内容时直接在内存中开辟一块连续的空间,然后将空间地址与索引对应。

2024-03-15 11:48:42 935

原创 集合系列(一) -集合框架简介

Java集合就像一种容器,可以把多个对象(实际上是对象的引用,但习惯上都称对象)“丢进”该容器中。从Java 5 增加了泛型以后,Java集合可以记住容器中对象的数据类型,使得编码更加简洁、健壮。

2024-03-15 11:46:08 869

原创 多线程系列(二十一) -ForkJoin使用详解

从 JDK 1.7 开始,引入了一种新的 Fork/Join 线程池框架,它可以把一个大任务拆成多个小任务并行执行,最后汇总执行结果。

2024-03-13 09:30:01 1272

原创 多线程系列(二十) -CompletableFuture使用详解

在上篇文章中,我们介绍了Future相关的用法,使用它可以获取异步任务执行的返回值。我们再次回顾一下Future相关的用法。

2024-03-11 09:29:49 1313

原创 多线程系列(十九) -Future使用详解

在前几篇线程系列文章中,我们介绍了线程池的相关技术,任务执行类只需要实Runnable接口,然后交给线程池,就可以轻松的实现异步执行多个任务的目标,提升程序的执行效率,比如如下异步执行任务下载。

2024-03-11 09:28:48 956

原创 多线程系列(十八) -AQS原理浅析

在之前的文章中,我们介绍了 ReentrantLock、ReadWriteLock、CountDownLatch、CyclicBarrier、Semaphore、ThreadPoolExecutor 等并发工具类的使用方式,它们在请求共享资源的时候,都能实现线程同步的效果。

2024-03-07 13:52:28 1250

原创 多线程系列(十七) -线程组介绍

在之前的多线程系列文章中,我们陆陆续续的介绍了Thread线程类相关的知识和用法,其实在Thread类上还有一层ThreadGroup类,也就是线程组。

2024-03-07 13:51:02 749

原创 多线程系列(十六) -常用并发原子类详解

在 Java 的java.util.concurrent包中,除了提供底层锁、并发同步等工具类以外,还提供了一组原子操作类,大多以Atomic开头,他们位于java.util.concurrent.atomic包下。

2024-03-06 09:58:41 475

原创 多线程系列(十五) -常用并发工具类详解

在前几篇文章中,我们讲到了线程、线程池、BlockingQueue 等核心组件,其实 JDK 给开发者还提供了比synchronized更加高级的线程同步组件,比如 CountDownLatch、CyclicBarrier、Semaphore、Exchanger 等并发工具类。

2024-03-06 09:57:22 465

原创 多线程系列(十四) -一文带你搞懂线程池技术

虽然 Java 对线程的创建、中断、等待、通知、销毁、同步等功能提供了很多的支持,但是从操作系统角度来说,频繁的创建线程和销毁线程,其实是需要大量的时间和资源的。

2024-03-05 09:31:18 872

原创 多线程系列(十三) -一文带你搞懂阻塞队列

在 Java 的并发包里面还有一个非常重要的接口:BlockingQueue。

2024-03-05 09:28:53 859

原创 多线程系列(十二) -生产者和消费者模型

在 Java 多线程编程中,还有一个非常重要的设计模式,它就是:生产者和消费者模型。

2024-03-04 09:31:53 1213

原创 多线程系列(十一) -浅析并发读写锁StampedLock

为了进一步的提升程序并发执行效率,Java 8 引入了一个新的读写锁:StampedLock。

2024-03-04 09:30:21 915

原创 多线程系列(十) -ReadWriteLock用法详解

在上篇文章中,我们讲到ReentrantLock可以保证了只有一个线程能执行加锁的代码。但是有些时候,这种保护显的有点过头,比如下面这个方法,它仅仅就是只读取数据,不修改数据,它实际上允许多个线程同时调用的。

2024-02-26 13:42:39 840

原创 多线程系列(九) -ReentrantLock常用方法详解

在上一篇文章中,我们介绍了ReentrantLock类的一些基本用法,今天我们重点来介绍一下ReentrantLock其它的常用方法,以便对ReentrantLock类的使用有更深入的理解。

2024-02-26 13:39:49 1071

原创 多线程系列(八) -ReentrantLock基本用法介绍

在之前的线程系列文章中,我们介绍到了使用synchronized关键字可以实现线程同步安全的效果,以及采用wait()、notify()和notifyAll()方法,可以实现多个线程之间的通信协调,基本可以满足并发编程的需求。

2024-02-23 17:06:03 1039

原创 多线程系列(七) -ThreadLocal 用法及内存泄露分析

在 Java web 项目中,想必很多的同学对ThreadLocal这个类并不陌生,它最常用的应用场景就是用来做对象的跨层传递,避免多次传递,打破层次之间的约束。

2024-02-23 14:10:45 1119

原创 多线程系列(六) -等待和通知模型详解

在之前的线程系列文章中,我们介绍了synchronized和volatile关键字,使用它能解决线程同步的问题,但是它们无法解决线程之间协调和通信的问题。

2024-02-21 10:42:15 822

原创 多线程系列(五) -死锁分析及解决办法介绍

在之前的文章中,我们介绍了synchronized同步锁关键字的作用以及相关的用法,它能够保证同一时刻最多只有一个线程执行修饰的代码段,以实现线程安全执行的效果。但是如果过度的使用synchronized等方式进行加锁,程序可能会出现死锁现象。

2024-02-21 10:38:09 987

原创 多线程系列(四) -volatile关键字使用详解

在上篇文章中,我们介绍到在多线程环境下,如果编程不当,可能会出现程序运行结果混乱的问题。出现这个原因主要是,JMM 中主内存和线程工作内存的数据不一致,以及多个线程执行时无序,共同导致的结果。

2024-02-20 12:05:05 915

原创 多线程系列(三) -synchronized 关键字使用详解

在之前的线程系列文章中,我们介绍了线程创建的几种方式以及常用的方法介绍。我们接着聊聊多线程线程安全的问题,以及解决办法。

2024-02-20 11:54:21 943

原创 多线程系列(二) -Thread类使用详解

在很多场景下,我们经常听到采用多线程编程,能显著的提升程序的执行效率。例如执行大批量数据的插入操作,采用单线程编程进行插入可能需要 30 分钟,采用多线程编程进行插入可能只需要 5 分钟就够了。既然多线程编程技术如此厉害,那什么是多线程呢?

2024-02-19 09:56:23 867

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除