![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java 秒懂小文
文章平均质量分 87
Java秒懂小文是一个适合不同水平Java开发者的专栏,无论是初学者还是希望进阶的开发者都能从中获益。通过订阅专栏,读者不仅可以学习到系统的Java知识,还可以通过提供的额外资源和社区交流来加深理解和应用所学知识。
一名技术极客
在代码的海洋里,我是一名不断航行的探索者。热爱Java,热衷于深入挖掘技术细节,享受解决复杂问题的成就感。这里是我的CSDN博客,记录我在编程路上的学习笔记、项目实践和对新技术的思考。
作为一名拥有多年开发经验的Java程序员,我深知学习过程中的困难与挑战。因此,我的博客会尽量用简明的语言去阐释复杂的概念,分享实用的编程技巧,以及那些在我工作过程中积累的宝贵经验。无论是初学者还是资深开发者,我都希望这里的内容能对您有所帮助。
在这个快速变化的技术世界,让我们一起保持好奇心,不断学习,共同进步。欢迎留言讨论,期待与您一起探讨编程之美!
展开
-
你管这破玩意儿叫负载均衡?
架构一定要结合业务的实际情况来设计,脱离业务谈架构其实是耍流氓,可以看到上文每一个架构的衍化都与我们的业务发展息息相关,对于中小型流量没有那么大的公司,其实用 Nginx 作为负载均衡足够,在流量迅猛增长后则考虑使用 lvs+nginx,当然像美团这样的巨量流量(数十 Gbps的流量、上千万的并发连接),lvs 也不管用了(实测虽然使用了 lvs 但依然出现了不少丢包的现象)所以它们开发出了自己的一套四层负载均衡器 MGW。原创 2024-05-30 09:04:28 · 1179 阅读 · 0 评论 -
19、秒懂 Java wait() 和 notify() 方法
本文,我们来讲解下 Java 并发中的基础的基础,核心的核心,Java 并发编程中的最基本的机制之一 -「 线程同步 」。为了方便你理解并发编程中的各种概念和术语,我们首先会来一阵扫盲,讨论一些基本的并发相关术语和方法。接着,我们将开发一个简单的应用程序,并在合格应用程序里处理并发问题,以方便大家理解和巩固wait()和notify()。原创 2024-05-09 09:16:49 · 704 阅读 · 0 评论 -
18、秒懂 Java 之 Runnable 还是 Thread ?
写Java 代码的时候,我们经常会有这样的疑问:我到底是实现一个 Runnable 呢,还是扩展一个 Thread 类?你的答案是什么呢?那有没有标准答案呢?答案是什么呢?我们先来分析下,看看哪种方法在实践中更有意义以及为什么?原创 2024-05-09 08:58:51 · 742 阅读 · 0 评论 -
17、秒懂 Java Thread 生命周期
本文中,我想详细的讨论下 Java 中的核心概念 - 线程的生命周期。我会使用一张我自制的图片加上实用的代码片段,一步一步的详细剖析线程的各个状态和各个状态之间如何转换。原创 2024-05-08 10:44:56 · 959 阅读 · 0 评论 -
16、秒懂 Java ThreadLocalRandom
随机数生成是一个非常常见的操作,而且 Java 也提供了类用于生成随机数,而且呢,这个类也是线程安全的,就是有一点不好,在多线程下,它的性能不佳。为什么多线程下,Random 的性能不佳?因为,它采用了多个线程共享一个 Random 实例。这样就会导致多个线程争用。为了解决这个问题,Java 7 引入了类,用于在多线程环境中生成随机数。本文接下来的部分,就来看看如何如何执行以及如何在实际应用程序中使用它。原创 2024-05-08 08:49:00 · 1059 阅读 · 0 评论 -
15、秒懂 Java java.util.concurrent.Future
Java 在并发方面引入了 「 将来 」( Future )这个概念。把所有不在主线程执行的代码都附加了将来这个灵魂。主线程只负责其它并发线程的创建、启动、监视和处理并发线程完成任务或发生异常时的回调。其它情况,则交给并发线程自己去处理。而双方之间的沟通,就是通过一个个被称之为 「 将来 」 的类出处理。Future 定义在 java.util.concurrent包中,这是一个接口,自 Java 1.5以来一直存在的接口,用于处理异步调用和处理并发编程。原创 2024-05-08 08:41:27 · 696 阅读 · 0 评论 -
14、秒懂 Java 守护线程 ( Daemon Thread )
在这篇简短的文章中,我们将讲解下 Java 中的守护线程,看看它们可以做什么。我们还将解释守护线程和用户线程之间的区别。原创 2024-05-08 08:30:42 · 554 阅读 · 0 评论 -
13、秒懂 Java java.util.concurrent.Locks
对于Java 来讲,锁 ( Lock ) 是一种比标准同步块 ( synchronized block ) 更灵活,更复杂的线程同步机制。其实,Java 1.5 就已经存在 Lock 接口了。这个 Lock 接口在 java.util.concurrent.lock 包中定义,提供了大量的锁操作。本文中,我们将讲解 Lock 接口的不同实现并介绍如何在应用程序中使用锁。原创 2024-05-06 08:51:29 · 981 阅读 · 0 评论 -
12、秒懂 Java BlockingQueue
本文中,我们将介绍一个 java.util.concurrent 包提供的用于解决并发生产者 - 消费者问题的最有用的类 - BlockQueue。我们将介绍BlockingQueue 接口的 API 以及如何使用该接口的方法使编写并发程序更容易。在本文的后面,我们将展示一个具有多个生产者线程和多个消费者线程的简单程序的示例。原创 2024-04-30 14:53:52 · 423 阅读 · 0 评论 -
11、秒懂 Java CountDownLatch
本章节我们来讨论下 java.util.concurrent.CountDownLatch 这个类,顺带演示下如何在一些实际例子中使用它。CountDownLatch 类的作用呢?怎么说呢?简单来说,我们可以使用它来阻塞线程,直到其他线程完成给定任务。原创 2024-04-30 14:31:54 · 778 阅读 · 0 评论 -
10、秒懂系列之 Java 并发编程面试题
守护线程是一个不阻止Java虚拟机(JVM)退出的线程当所有非守护线程终止时,JVM只是放弃所有剩余的守护线程;守护线程通常用于为其他线程执行一些支持或服务任务,但我们应该考虑到它们可能随时被放弃;要将一个线程作为守护线程启动,应该在调用start()之前使用setDaemon()方法设置为守护线程如下所示;"));额外的奇怪的是,如果将上面的代码放在 main() 内运行,则可能无法打印该消息。而发生这种情况的原因,是因为 main() 线程在守护线程运行到打印消息之前就已经终止。原创 2024-04-30 14:13:07 · 755 阅读 · 0 评论 -
09、秒懂 Java CompletableFuture ( 下 )
上一章节中我们讲解了 CompletableFuture 的一些基本用法,比如如何使用和如何处理异步计算结果。本章节我们继续,主要讲解如何使用 CompletableFuture 来组合异步计算的结果。原创 2024-04-30 13:43:22 · 388 阅读 · 0 评论 -
08、秒懂 Java CompletableFuture ( 上 )
本文我们来了解下 Java 8 引入的 CompletableFuture 类,了解下该类提供的功能和用例。原创 2024-04-29 09:00:58 · 663 阅读 · 0 评论 -
07、秒懂 Java Google Guava 实现
Guava 是托管在 Github.com 上的流行的 Google 开源的 Java 线程池库。Guava 包含了许多有用的并发类,同时还包含了几个方便的 ExecutorService 实现,但这些实现类都无法通过直接实例化或子类化来创建实例。取而代之的是提供了 MoreExecutors 助手类来创建它们的实例。原创 2024-04-29 08:52:44 · 1038 阅读 · 0 评论 -
06、秒懂 Java ForkJoinPool
在fork/join 框架中,任何任务都可以生成 ( fork ) 多个子任务并使用 join() 方法等待它们的完成。fork/join 框架的好处是它不会为每个任务或子任务创建新线程,而是实现了 工作窃取 ( Work Stealing ) 算法。因为,即使是使用一个简单的 ThreadPoolExecutor ,也会在不断的递归中快速耗尽线程。在这个示例中,树是一个由节点,int 值和一组子节点组成。每个任务都接收自己的节点,并将其值添加到其子节点的值之和上。原创 2024-04-28 10:50:17 · 313 阅读 · 0 评论 -
05、秒懂Java线程之 ScheduledThreadPoolExecutor
ScheduledThreadPoolExecutor 扩展自 一文秒懂 Java 线程池之 ThreadPoolExecutor 讲解的 了ThreadPoolExecutor 类,并且添加了其它方法实现了 ScheduledExecutorService 接口。原创 2024-04-28 10:42:45 · 174 阅读 · 0 评论 -
04、秒懂 Java 线程池之 ThreadPoolExecutor
因为上一章节篇幅有限,所以我决定把 一文秒懂 Java 线程池 拆分为三篇文章单独介绍。本章节,我们就来看看 ThreadPoolExecutor。原创 2024-04-26 11:43:04 · 511 阅读 · 0 评论 -
03、秒懂 Java 线程池 ( Thread Pool )
本文我们将讲解 Java 中的线程池 ( Thread Pool ),从 Java 标准库中的线程池的不同实现开始,到 Google 开发的 Guava 库的前世今生。本章节涉及到很多前几个章节中阐述的知识点。我们希望你是按照顺序阅读下来的,不然有些知识会一头雾水。Java 语言的实现中,把 Java 线程一一映射到操作系统级的线程,而后者是操作系统的资源,这意味着,如果开发者毫无节制地创建线程,那么线程资源就会被快速的耗尽。原创 2024-04-26 11:37:22 · 678 阅读 · 0 评论 -
02、秒懂 Java Fork-Join
fork/join 框架是 Java 7 中引入的 ,它是一个工具,通过 「 分而治之 」 的方法尝试将所有可用的处理器内核使用起来帮助加速并行处理。在实际使用过程中,这种 「 分而治之 」的方法意味着框架首先要 fork ,递归地将任务分解为较小的独立子任务,直到它们足够简单以便异步执行。然后,join 部分开始工作,将所有子任务的结果递归地连接成单个结果,或者在返回 void 的任务的情况下,程序只是等待每个子任务执行完毕。原创 2024-04-25 14:43:16 · 1103 阅读 · 0 评论 -
01、秒懂 Java ExecutorService
invokeAll() 方法将一组任务分配给 ExecutorService ,使每个任务执行,并以 Future 类型的对象列表的形式返回所有任务执行的结果在继续深入理解 ExecutorService 之前,我们必须先讲解下另外两件事:关闭 ExecutorService 和处理 Future 返回类型。原创 2024-04-25 14:30:47 · 962 阅读 · 0 评论