前言
对应从事后端开发的同学来说,线程是必须要使用了,因为使用它可以提升系统的性能。但是,创建线程和销毁线程都是比较耗时的操作,频繁的创建和销毁线程会浪费很多CPU的资源。此外,如果每个任务都创建一个线程去处理,这样线程会越来越多。我们知道每个线程默认情况下占1M的内存空间,如果线程非常多,内存资源将会被耗尽。这时,我们需要线程池去管理线程,不会出现内存资源被耗尽的情况,也不会出现频繁创建和销毁线程的情况,因为它内部是可以复用线程的。
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中的阻塞队列和非阻塞队列我们介绍了常用的几种队列,队列的使用很广泛,特别是一些需要生产消费模式的场景以及需要对全局的集合进行操作的场景。今天我们来讲讲其中的一种应用——线程池。
2025年05月22日
在Java 16中引入的record类,在后续版本中得到了进一步增强。记录类现在支持更多功能,比如可以实现接口。这使得记录类不仅限于简单的数据载体,还能承担更多的业务逻辑。例如,你可以通过new关键字直接实例化记录类,并且可以在其主体内定义静态方法、静态字段以及静态初始化块。
2025年05月22日
execute(Runnable command)接口是无返回值的,与之相对应的是一个有返回值的接口Future submit(Callable task),这点在前面已经提到。