02 2024 档案

摘要:Java NIONIO 简介 在传统的 Java I/O 模型(BIO)中,I/O 操作是以阻塞的方式进行的。也就是说,当一个线程执行一个 I/O 操作时,它会被阻塞直到操作完成。这种阻塞模型在处理多个并发连接时可能会导致性能瓶颈,因为需要为每个连接创建一个线程,而线程的创建和切换都是有开销的。 为了解决这个问题, 阅读全文
posted @ 2024-02-05 22:27 Dreaife 阅读(24) 评论(0) 推荐(0)
摘要:Java IOJava IO基础知识 IO 流简介 IO 即 Input/Output,输入和输出。数据输入到计算机内存的过程即输入,反之输出到外部存储(比如数据库,文件,远程主机)的过程即输出。数据传输过程类似于水流,因此称为 IO 流。IO 流在 Java 中分为输入流和输出流,而根据数据的处理方式又分为字节 阅读全文
posted @ 2024-02-05 21:49 Dreaife 阅读(31) 评论(0) 推荐(0)
摘要:Java threadLocal对于ThreadLocal,大家的第一反应可能是很简单呀,线程的变量副本,每个线程隔离。那这里有几个问题大家可以思考一下: ThreadLocal的 key 是弱引用,那么在 ThreadLocal.get()的时候,发生GC之后,key 是否为null? ThreadLocal中ThreadLoc 阅读全文
posted @ 2024-02-05 00:54 Dreaife 阅读(51) 评论(0) 推荐(0)
摘要:java Atomic原子类&&常见并发容器Atomic原子类 Atomic 原子类介绍 Atomic 翻译成中文是原子的意思。在这里 Atomic 是指一个操作是不可中断的。即使是在多个线程一起执行的时候,一个操作一旦开始,就不会被其他线程干扰。 所以,所谓原子类说简单点就是具有原子/原子操作特征的类。 并发包 java.util.conc 阅读全文
posted @ 2024-02-04 19:37 Dreaife 阅读(282) 评论(0) 推荐(0)
摘要:Java AQSAQS 介绍 AQS 的全称为 AbstractQueuedSynchronizer ,翻译过来的意思就是抽象队列同步器。这个类在 java.util.concurrent.locks 包下面。 AQS 就是一个抽象类,主要用来构建锁和同步器。 public abstract class Abstr 阅读全文
posted @ 2024-02-04 13:25 Dreaife 阅读(41) 评论(0) 推荐(0)
摘要:Java线程池使用正确声明线程池 线程池必须手动通过 ThreadPoolExecutor 的构造函数来声明,避免使用Executors 类创建线程池,会有 OOM 风险。 Executors 返回线程池对象的弊端如下: FixedThreadPool 和 SingleThreadExecutor:使用的是无界的 L 阅读全文
posted @ 2024-02-04 00:29 Dreaife 阅读(332) 评论(0) 推荐(0)
摘要:Java JMM内存模型JMM(Java 内存模型)主要定义了对于一个共享变量,当另一个线程对这个共享变量执行写操作后,这个线程对这个共享变量的可见性。 要想理解透彻 JMM(Java 内存模型),我们先要从 CPU 缓存模型和指令重排序 说起! 从 CPU 缓存模型说起 为什么要弄一个 CPU 高速缓存呢? 类比我们开发 阅读全文
posted @ 2024-02-02 00:15 Dreaife 阅读(19) 评论(0) 推荐(0)
摘要:java并发编程java并发编程 什么是线程和进程? 何为进程? 进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。 在 Java 中,当我们启动 main 函数时其实就是启动了一个 JVM 的进程,而 main 函数所在的线程就是这个进程中 阅读全文
posted @ 2024-02-01 01:49 Dreaife 阅读(37) 评论(0) 推荐(0)