前言
在介绍线程池之前,我们先回顾下线程的基本知识。其中线程池包括ThreadPoolExecutor 默认线程和
ScheduledThreadPoolExecutor 定时线程池 ,本篇重点介绍ThreadPoolExecutor线程池。
2025年05月22日
在介绍线程池之前,我们先回顾下线程的基本知识。其中线程池包括ThreadPoolExecutor 默认线程和
ScheduledThreadPoolExecutor 定时线程池 ,本篇重点介绍ThreadPoolExecutor线程池。
2025年05月22日
在Java中,Semaphore(信号量)是位于java.util.concurrent包中的一个同步工具类。它用于控制同时访问某一资源的线程数量,或者是同时执行某一任务的线程数量。信号量通常用来限制可以访问某些资源(物理或逻辑的)的线程数量。
许可机制
Semaphore 维护一组虚拟许可,初始化时指定许可数量。线程通过 acquire() 尝试获取许可(支持阻塞或非阻塞方式),资源使用后通过 release() 释放许可。若许可数为 0,后续线程将阻塞直至有可用许可。
2025年05月22日
对应从事后端开发的同学来说,线程是必须要使用了,因为使用它可以提升系统的性能。但是,创建线程和销毁线程都是比较耗时的操作,频繁的创建和销毁线程会浪费很多CPU的资源。此外,如果每个任务都创建一个线程去处理,这样线程会越来越多。我们知道每个线程默认情况下占1M的内存空间,如果线程非常多,内存资源将会被耗尽。这时,我们需要线程池去管理线程,不会出现内存资源被耗尽的情况,也不会出现频繁创建和销毁线程的情况,因为它内部是可以复用线程的。
2025年05月22日
一、线程是什么?
线程是程序执行的最小单元,是进程内的一个独立控制流。一个进程可以包含多个线程,共享进程的内存和资源(如文件句柄、全局变量等),但每个线程有自己的程序计数器、栈和局部变量。线程的创建、切换和销毁成本比进程低得多,因此更适合并发任务。
2025年05月22日
“
不论你是否关注,Java Web应用都或多或少的使用了线程池来处理请求。线程池的实现细节可能会被忽视,但是有关于线程池的使用和调优迟早是需要了解的。本文由浅入深,介绍了Java线程池的使用,以及正确配置线程池的方法。所谓老司机带路,带你轻松上道。
最简单的单线程
我们先从基础开始。无论使用哪种应用服务器或者框架(如Tomcat、Jetty等),他们都有类似的基础实现。Web服务的基础是套接字(socket),套接字负责监听端口,等待TCP连接,并接受TCP连接。一旦TCP连接被接受,即可从新创建的TCP连接中读取和发送数据。
2025年05月22日
“你的高并发系统频繁出现数据错乱?不是代码写错,是多线程的‘幽灵陷阱’在作祟!今日头条揭秘百万QPS系统必踩深坑,阿里P7急救方案曝光,文末送《并发编程红宝书》+调试工具包!”
2025年05月22日
上篇文章我们讲解了Executors这个线程池工厂类的用法,介绍了它所提供的一些常用线程池工具的用法,今天我们来继续深入学习。
2025年05月22日
【编者的话】在Java中,使用线程池来异步执行一些耗时任务是非常常见的操作。最初我们一般都是直接使用new Thread().start的方式,但我们知道,线程的创建和销毁都会耗费大量的资源
2025年05月22日
前文java中的阻塞队列和非阻塞队列我们介绍了常用的几种队列,队列的使用很广泛,特别是一些需要生产消费模式的场景以及需要对全局的集合进行操作的场景。今天我们来讲讲其中的一种应用——线程池。