Java多线程
文章平均质量分 83
Java面试大全
分享一些有关于 Java 体系的知识,包括Java 基础知识/数据结构/算法/面试技巧,Spring/Springboot/MQ源码分析,高并发/高性能/分布式/微服务架构的原理,JVM性能优化 ,希望能让大家在技术上和思想上带来一些提升。
展开
-
秒懂 Java 之 Runnable 还是 Thread ?
写Java 代码的时候,我们经常会有这样的疑问:我到底是实现一个 Runnable 呢,还是扩展一个 Thread 类?你的答案是什么呢?那有没有标准答案呢?答案是什么呢?我们先来分析下,看看哪种方法在实践中更有意义以及为什么?原创 2023-01-20 22:35:21 · 1247 阅读 · 0 评论 -
秒懂 Java Thread 生命周期
本文中,我想详细的讨论下 Java 中的核心概念 - 线程的生命周期。我会使用一张我自制的图片加上实用的代码片段,一步一步的详细剖析线程的各个状态和各个状态之间如何转换。原创 2023-01-20 22:34:55 · 877 阅读 · 0 评论 -
秒懂 Java ExecutorService
是 Java java.util.concurrent 包的重要组成部分,是 Java JDK 提供的框架,用于简化异步模式下任务的执行。一般来说,ExecutorService 会自动提供一个线程池和相关 API,用于为其分配任务。原创 2023-01-11 19:40:35 · 1574 阅读 · 0 评论 -
19、Java并发 Java wait() 和 notify() 方法
大家有没有发现,其实 「 一文秒懂 」 系列讲述的都是多线程并发开发的问题。这个话题太大了,估计没有上百篇文章都解释不清楚。本文,我们来讲解下 Java 并发中的基础的基础,核心的核心,Java 并发编程中的最基本的机制之一 – 「 线程同步 」为了方便你理解并发编程中的各种概念和术语,我们首先会来一阵扫盲,讨论一些基本的并发相关术语和方法。接着,我们将开发一个简单的应用程序,并在合格应用程序里处理并发问题,以方便大家理解和巩固 wait() 和 notify()。原创 2023-01-11 19:35:29 · 329 阅读 · 0 评论 -
18、Java并发 Java 之 Runnable 还是 Thread ?
写Java 代码的时候,我们经常会有这样的疑问:我到底是实现一个 Runnable 呢,还是扩展一个 Thread 类?你的答案是什么呢?那有没有标准答案呢?答案是什么呢?我们先来分析下,看看哪种方法在实践中更有意义以及为什么?原创 2023-01-10 19:00:05 · 374 阅读 · 0 评论 -
16、Java并发 Java ThreadLocalRandom
随机数生成是一个非常常见的操作,而且 Java 也提供了 java.util.Random 类用于生成随机数,而且呢,这个类也是线程安全的,就是有一点不好,在多线程下,它的性能不佳。为什么多线程下,Random 的性能不佳?因为,它采用了多个线程共享一个 Random 实例。这样就会导致多个线程争用。为了解决这个问题,Java 7 引入了 java.util.concurrent.ThreadLocalRandom 类,用于在多线程环境中生成随机数。原创 2023-01-10 18:59:15 · 424 阅读 · 0 评论 -
15、Java并发 Java java.util.concurrent.Future
写了几篇 Java 一文秒懂 XXX 系列的文章后,对 Java 并发编程的设计思想真的是竖然起敬。Java 在并发方面引入了 「 将来 」( Future ) 这个概念。把所有不在主线程执行的代码都附加了将来这个灵魂。主线程只负责其它并发线程的创建、启动、监视和处理并发线程完成任务或发生异常时的回调。其它情况,则交给并发线程自己去处理。而双方之间的沟通,就是通过一个个被称之为 「 将来 」 的类出处理。原创 2023-01-09 18:38:50 · 403 阅读 · 0 评论 -
14、Java并发 Java 守护线程 ( Daemon Thread )
在这篇简短的文章中,我们将讲解下 Java 中的守护线程,看看它们可以做什么。我们还将解释守护线程和用户线程之间的区别。原创 2023-01-09 18:38:11 · 304 阅读 · 0 评论 -
13、Java并发 Java java.util.concurrent.Locks
对于Java 来讲,锁 ( Lock ) 是一种比标准同步块 ( synchronized block ) 更灵活,更复杂的线程同步机制。其实,Java 1.5 就已经存在 Lock 接口了。这个 Lock 接口在 java.util.concurrent.lock 包中定义,提供了大量的锁操作。本文中,我们将讲解 Lock 接口的不同实现并介绍如何在应用程序中使用锁。原创 2023-01-08 16:56:05 · 352 阅读 · 0 评论 -
12、Java并发 Java BlockingQueue
本文中,我们将介绍一个 java.util.concurrent 包提供的用于解决并发生产者 – 消费者问题的最有用的类 – BlockQueue。我们将介绍BlockingQueue 接口的 API 以及如何使用该接口的方法使编写并发程序更容易。原创 2023-01-08 16:56:09 · 441 阅读 · 0 评论 -
11、Java并发 Java CountDownLatch
简而言之,CountDownLatch 有一个计数器字段,我们可以根据需要减少它,因此,我们可以使用它来阻止调用线程,直到它被计数到零。原创 2023-01-07 21:03:57 · 482 阅读 · 0 评论 -
10、Java并发 并发编程实战
1、 进程和线程都是并发单元,但它们有一个根本区别:** 进程不共享公共内存,而线程则共享**;2、 从操作系统的角度来看,进程是一个独立的软件,在其自己的虚拟内存空间中运行任何一个多任务操作系统(这几乎意味着任何现代操作系统)都必须将内存中的进程分开,这样一个失败的进程就不会通过加扰公共内存来拖累所有其它进程因此,进程通常是隔离的,它们通过进程间通信进行协作,进程间通信由操作系统定义为一种中间API;3、 相反,线程是应用程序的一部分,它与同一应用程序的其他线程共享公共内存使用公共内存可以减少大量开销原创 2023-01-07 21:02:01 · 510 阅读 · 0 评论 -
09、Java并发 Java CompletableFuture ( 下 )
上一章节中我们讲解了 CompletableFuture 的一些基本用法,比如如何使用和如何处理异步计算结果。本章节我们继续,主要讲解如何使用 CompletableFuture 来组合异步计算的结果原创 2023-01-06 14:16:13 · 664 阅读 · 0 评论 -
07、Java并发 Java Google Guava
Guava 是托管在 Github.com 上的流行的 Google 开源的 Java 线程池库。Guava 包含了许多有用的并发类,同时还包含了几个方便的 ExecutorService 实现,但这些实现类都无法通过直接实例化或子类化来创建实例。取而代之的是提供了 MoreExecutors 助手类来创建它们的实例。原创 2023-01-05 16:10:33 · 353 阅读 · 0 评论 -
06、Java并发 Java ForkJoinPool
ForkJoinPool 是Java 7 中引入的 fork/join 框架的核心之一。它解决了一个常见的问题: 如何在递归中生成多个任务。因为,即使是使用一个简单的 ThreadPoolExecutor ,也会在不断的递归中快速耗尽线程。因为每个任务或子任务都需要自己的线程来运行。原创 2023-01-05 16:09:59 · 385 阅读 · 0 评论 -
04、Java并发 Java 线程池之 ThreadPoolExecutor
因为上一章节篇幅有限,所以我决定把一文秒懂 Java 线程池拆分为三篇文章单独介绍。本章节,我们就来看看 ThreadPoolExecutor 。原创 2023-01-04 15:05:17 · 537 阅读 · 0 评论 -
03、Java并发 Java 线程池 ( Thread Pool ) (上)
本文我们将讲解 Java 中的线程池 ( Thread Pool ),从 Java 标准库中的线程池的不同实现开始,到 Google 开发的 Guava 库的前世今生。原创 2023-01-04 13:38:51 · 291 阅读 · 0 评论 -
02、Java并发 Java Fork-Join
Java并发 Java Fork-Join原创 2023-01-03 20:01:08 · 520 阅读 · 0 评论 -
01、Java并发 Java ExecutorService
Java并发 Java ExecutorService原创 2023-01-03 18:31:32 · 582 阅读 · 0 评论 -
深入研究java.lang.ThreadLocal类
一、概述ThreadLocal是什么呢?其实ThreadLocal并非是一个线程的本地实现版本,它并不是一个Thread,而是threadlocalvariable(线程局部变量)。也许把它命名为ThreadLocalVar更加合适。线程局部变量(ThreadLocal)其实的功用非常简单,就是为每一个使用该变量的线程都提供一个变量值的副本,是Java中一种较为特殊的线程绑定机制,是每一个线程都可...转载 2018-05-29 09:24:13 · 13107 阅读 · 0 评论 -
ThreadLocal和Synchonized的区别
ThreadLocal使用场合主要解决多线程中数据因并发产生不一致问题。ThreadLocal为每个线程的中并发访问的数据提供一个副本,通过访问副本来运行业务,这样的结果是耗费了内存,单大大减少了线程同步所带来性能消耗,也减少了线程并发控制的复杂度。 ThreadLocal不能使用原子类型,只能使用Object类型。ThreadLocal的使用比synchronized要简单得多。 ThreadL...原创 2018-05-29 09:23:58 · 13656 阅读 · 0 评论 -
Java多线程的常见例子
一.相关知识:Java多线程程序设计到的知识:(一)对同一个数量进行操作(二)对同一个对象进行操作(三)回调方法使用(四)线程同步,死锁问题(五)线程通信二.示例一:三个售票窗口同时出售20张票;程序分析:1.票数要使用同一个静态值 2.为保证不会出现卖出同一个票数,要java多线程同步锁。设计思路:1.创建一个站台类Station,继承Thread,重写run方法,在run方法里面执行售票操作!...转载 2018-05-25 21:16:27 · 13084 阅读 · 0 评论 -
关于“设计4个线程,其中两个线程对j加1,另外两个线程对j减1”的问题
1、代码[java] view plain copypublic class Test { public static void main(String[] args) { Data data = new Data(); Add add = new Add(data); Dec dec = new Dec(da...转载 2018-05-25 21:07:04 · 13638 阅读 · 0 评论