首页
学习
活动
专区
工具
TVP
发布

JAVA核心

JAVA核心
专栏成员
82
文章
43081
阅读量
12
订阅数
重温JAVA线程池精髓:Executor、ExecutorService及Executors的源码剖析与应用指南
在Java并发编程中,线程池是一个非常重要的概念。它可以帮助我们更好地管理和控制线程的使用,避免因为大量线程的创建和销毁带来的性能开销。Java的java.util.concurrent(简称JUC)包中提供了一套丰富的线程池工具,包括Executor接口、ExecutorService接口以及Executors工厂类等。本文将详细介绍这些工具的使用和原理,帮助大家更好地理解和应用Java中的线程池技术。
公众号:码到三十五
2024-03-19
7120
深入剖析Java中的CountDownLatch:同步协作的利器
CountDownLatch是一个同步工具类,它允许一个或多个线程等待其他线程完成操作。CountDownLatch用一个给定的计数器来初始化,该计数器的值表示需要等待完成的任务数量。每当一个线程完成其任务后,计数器的值就会减一。当计数器的值达到零时,表示所有需要等待的任务都已经完成,此时在CountDownLatch上等待的线程将被唤醒并可以继续执行。
公众号:码到三十五
2024-03-19
2000
深入理解Apache Commons Pool2池化技术
Apache Commons Pool2是Apache Commons下的一个开源项目,主要用于实现和管理对象池。对象池是一种常见的设计模式,通过复用来分摊昂贵对象的创建和销毁代价,从而优化资源利用和提高应用程序性能。
公众号:码到三十五
2024-03-19
5970
深入理解Java中的ConcurrentLinkedQueue:高效并发处理的利器
ConcurrentLinkedQueue是基于链接节点的无界线程安全队列。此队列按照FIFO(先进先出)原则对元素进行排序。队列的头部是队列中存在时间最长的元素,而队列的尾部则是最近添加的元素。新的元素总是被插入到队列的尾部,而队列的获取操作(例如poll或peek)则是从队列头部开始。
公众号:码到三十五
2024-03-19
4410
深入解析Java并发库(JUC)中的Phaser:原理、应用与源码分析
Phaser,顾名思义,是一个用于阶段同步的工具。与CountDownLatch和CyclicBarrier等同步工具相比,Phaser提供了更为灵活的同步机制。它允许一组线程在多个阶段上进行同步,而不是仅仅在一个点上。这使得Phaser在处理复杂的多阶段并发任务时非常有用。
公众号:码到三十五
2024-03-19
2200
深入探索Java并发编程:ArrayBlockingQueue详解
ArrayBlockingQueue是一个基于数组的有界阻塞队列。它在创建时需要指定队列的大小,并且这个大小在之后是不能改变的。队列中的元素按照FIFO(先进先出)的原则进行排序。ArrayBlockingQueue是线程安全的,可以在多线程环境下安全地使用。
公众号:码到三十五
2024-03-19
2420
Java中的LinkedBlockingQueue:原理、应用与性能深入剖析
在Java的并发编程领域,LinkedBlockingQueue是一个非常重要的类,它提供了一种高效且线程安全的方式来处理队列中的元素。该类位于java.util.concurrent包中,是BlockingQueue接口的一个实现,专门设计用于处理多线程环境中的生产者-消费者问题。在本篇博客中,我们将深入探讨LinkedBlockingQueue的内部工作原理、关键特性以及最佳实践。
公众号:码到三十五
2024-03-19
4070
深入探究Java中的TransferQueue:机制、特性与应用场景
TransferQueue是Java并发包java.util.concurrent中的一个接口,它扩展了BlockingQueue接口。与传统的BlockingQueue不同,TransferQueue提供了更精确的控制,允许生产者和消费者线程之间进行更直接的交互。它引入了两种新的操作方法:transfer(E e)和tryTransfer(E e, long timeout, TimeUnit unit),这两种方法提供了在数据可用时的等待/传输语义。
公众号:码到三十五
2024-03-19
1070
深入理解Java中的ConcurrentSkipListMap:高效并发的有序映射
在Java中,Map是一种非常重要的数据结构,用于存储键值对。在多线程环境下,为了保证数据的一致性和线程安全,我们需要使用并发映射。Java提供了多种并发映射实现,如ConcurrentHashMap、Hashtable等。其中,ConcurrentSkipListMap是一种特殊的有序映射,它基于跳表(Skip List)数据结构实现,提供了高并发的插入、删除和查找操作。
公众号:码到三十五
2024-03-19
2140
深入解析Java中的ForkJoinPool:分而治之,并行处理的利器
ForkJoinPool是Java并发包java.util.concurrent中的一个类,它提供了一个工作窃取算法的实现,能够高效地处理大量可以被拆分成较小子任务的任务。与传统的ExecutorService不同,ForkJoinPool特别适合于递归或分治算法的场景,在这些场景中,一个大任务可以被拆分成多个小任务并行处理,然后再将结果合并。
公众号:码到三十五
2024-03-19
1220
深入理解Java中的线程安全List:CopyOnWriteArrayList原理和应用
CopyOnWrite,也被称为写时复制(Copy-On-Write,简称COW),是程序设计领域中的一种优化策略。这种策略的核心思想是,当多个调用者(或线程)同时访问同一份资源时,他们会共同获取一个指向该资源的指针。只要没有调用者尝试修改这份资源,所有的调用者都可以继续访问同一个资源。但是,一旦有调用者尝试修改资源,系统就会复制一份该资源的副本给这个调用者,而其他调用者所见到的仍然是原来的资源。这个过程对其他的调用者都是透明的,他们并不知道资源已经被复制。
公众号:码到三十五
2024-03-19
1.4K0
Java List集合取交集的八种不同实现方式
这种方法利用Stream API的filter和collect操作来找到两个列表的交集。
公众号:码到三十五
2024-03-19
1.5K0
Spring Cloud微服务在Windows本地开发时禁用Nacos注册中心注册
在Spring Cloud微服务架构中,服务注册与发现是实现微服务间通信的重要环节。Nacos作为一个动态服务发现、配置和服务管理平台,被广泛应用于微服务架构中。然而,在开发过程中,开发者可能希望在本地机器上进行测试,而不希望服务自动注册到Nacos注册中心,以免影响到测试环境。
公众号:码到三十五
2024-03-19
7110
彻底攻克ThreadLocal:搞懂原理、实战应用,深挖源码!扩展InheritableThreadLocal、FastThreadLocal!
在并发编程中,多个线程同时访问和修改共享变量是一个常见的场景。这种情况下,可能会出现线程安全问题,即多个线程对共享变量的操作可能会相互干扰,导致数据不一致。
公众号:码到三十五
2024-03-19
2.2K0
十个方法破解Java生成随机密码的小窍门
在这个例子中,我们定义了一个包含所有可能字符的字符串CHAR_LIST,然后随机选择其中的字符来生成密码。
公众号:码到三十五
2024-03-19
1140
Java日志框架的纷争演进与传奇故事
时间回到1996年,欧洲安全电子市场(EU SEMPER)项目正进行得如火如荼。项目组成员意识到,他们需要一个强大的程序跟踪API来辅助开发。这就是Log4j的雏形。经过不断的迭代和完善,Log4j逐渐崭露头角,成为了Java社区中炙手可热的日志框架。
公众号:码到三十五
2024-03-19
1180
深入解析Java并发库(JUC)中的LongAdder
LongAdder是一个用于并发环境中的长整型加法操作的类,它提供了比AtomicLong更高的吞吐量。LongAdder在内部维护了一个或多个变量(取决于当前并发级别和系统环境),每个线程对其中一个变量进行操作,从而减少了线程间的竞争。当需要获取总和时,这些变量会被加在一起。
公众号:码到三十五
2024-03-19
2230
深入探索Java集合框架
Java集合框架位于java.util包中,是Java编程语言的核心部分。它定义了几种类型的集合,包括列表(List)、集合(Set)、队列(Queue)、双端队列(Deque)以及映射(Map)。这些集合类型通过统一的接口和抽象类来实现,从而提供了对数据的一致视图。
公众号:码到三十五
2024-03-19
1240
ConcurrentHashMap的演进:从Java 8之前到Java 17的实现原理深度剖析
在Java的并发编程中,ConcurrentHashMap以其出色的并发性能和数据一致性成为了众多开发者的首选。从Java 5的引入至今,ConcurrentHashMap经历了多次重大的改进和优化。本文将详细深入全面地探讨从Java 8之前到Java 17中ConcurrentHashMap的实现原理及其变化。
公众号:码到三十五
2024-03-19
9710
架构面试题汇总:JVM全套(四)
在内存模型方面,需要了解Java堆、Java栈、方法区以及本地方法栈等各个部分的作用和特点。特别是Java堆和方法区,它们是JVM管理的两块主要内存区域,分别用于存储对象实例和类的元数据信息。
公众号:码到三十五
2024-03-19
1010
点击加载更多
社区活动
【纪录片】中国数据库前世今生
穿越半个世纪,探寻中国数据库50年的发展历程
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档