高并发学习
文章平均质量分 90
ktkiko11
日拱一卒 功不唐捐
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Netty中的NioEventloop(1)
例如,Netty的Channel处理了缓冲区的管理、事件的注册与分发、以及数据的编解码等,简化了开发者的使用。轮询通常是通过一个单独的线程来进行,这个线程不断地调用Selector的select方法,它会检查所有注册的事件,查看哪些是“就绪”的,即可以进行处理的。Netty的Channel封装了原生NIO的异步I/O,提供了更加灵活的事件驱动模型,自动处理事件的注册、轮询和分发。在多线程模型中,Reactor通常会将I/O任务和非I/O任务分开,I/O任务由专门的线程来处理,非I/O任务则交给其他线程。原创 2025-01-15 16:20:07 · 707 阅读 · 0 评论 -
高并发编程中ThreadLocal的使用
定义:ThreadLocal是什么?是 Java 提供的一个类,它用于为每个线程提供独立的变量副本。也就是说,每个线程在访问时,都会得到一个属于自己的变量值,而不会与其他线程共享这个值。它的核心作用就是提供线程局部存储(Thread Local Storage,简称 TLS)。在多线程环境中,多个线程通常会访问共享的资源。为了避免线程安全问题,我们通常会使用锁机制来确保在同一时刻只有一个线程能访问共享资源。原创 2025-01-11 19:48:27 · 1246 阅读 · 0 评论 -
不同类型任务的线程池设置
IO密集型任务是指程序运行时,大量时间花费在与外部设备(磁盘、网络、数据库等)的交互上,而不是在CPU计算上。I/O密集型任务是指任务的大部分时间都在等待 I/O 操作完成(如磁盘读写、网络通信、数据库查询等),而非计算逻辑的执行。线程池的配置需要针对任务的特点进行优化,不同类型的任务对线程数量、资源利用以及运行策略有不同需求。CPU密集型任务指需要大量计算的任务,任务大部分时间花费在逻辑运算上,而非等待资源。钩子函数与线程池结合使用,可适应 I/O密集型、CPU密集型、混合型任务的需求,实现优雅关闭。原创 2025-01-06 11:23:15 · 1144 阅读 · 0 评论 -
线程池的创建规范
线程池的核心理念是将线程的创建、销毁、复用等操作交给线程池来管理,避免了频繁的线程创建与销毁的性能开销。例如,线程池的核心线程数、最大线程数、任务队列的选择、线程空闲时间的设置等,都能影响线程池的性能和响应速度。当线程池中的某个线程完成任务后,它会去“窃取”其他线程的任务来继续执行,从而避免空闲线程浪费。:线程空闲存活时间是指当线程池中的线程数超过核心线程数时,这些线程在空闲时会等待的最长时间。是一种灵活的线程池,它会根据任务的需要动态创建线程,线程池的大小没有固定上限。,并讨论它们的劣势。原创 2025-01-03 20:37:32 · 762 阅读 · 0 评论 -
四种线程池的创建及任务提交
它通过提前创建一定数量的线程,并将任务提交给这些线程执行,来实现资源的合理分配和任务的高效处理。线程池中的线程是提前创建好的,当有新任务时可以立即分配线程执行,而无需等待线程创建。如果线程长时间空闲且超出线程池的核心线程数限制,线程会被销毁以节约资源。超过核心线程数的线程在空闲状态下能存活的时间,适用于动态调整线程池规模。:线程池在任务执行完毕后,不会销毁线程,而是让线程继续等待下一个任务。如果没有空闲线程,且线程池未达到最大线程数,则创建新线程来处理任务。如果没有空闲线程,则创建新线程。原创 2025-01-02 20:21:35 · 1632 阅读 · 0 评论 -
线程的基本操作
当线程试图进入一个已被其他线程锁住的同步代码块或方法时,线程进入**Blocked(阻塞)**状态。线程共享同一个进程的资源,例如内存空间,但线程本身有独立的运行栈和程序计数器。当线程尝试获取一个被其他线程占用的锁,或者等待资源释放时,线程进入阻塞状态。:提示线程调度器当前线程愿意让出CPU时间,但不一定会立即切换到其他线程。不影响锁的持有状态,其他线程仍然无法访问被锁住的资源。:使当前线程进入等待状态,并释放锁,直到其他线程调用。当CPU开始执行该线程的代码时,线程进入运行状态。原创 2024-12-26 11:12:18 · 838 阅读 · 0 评论 -
四种线程的创建方法
线程池通过复用线程,减少了线程的创建和销毁开销,同时提供了对线程的统一管理,包括线程的调度、任务队列的维护等。一个线程可以被看作是一个独立的执行路径,可以运行并发任务,例如处理网络请求、文件操作或复杂的计算。接口的方式将线程的任务逻辑和线程的生命周期管理分离,使得类的继承层次更加灵活,适用于需要共享资源或已经有父类的场景。线程池在程序启动时会预先创建一定数量的线程,任务提交后会从线程池中复用线程来执行任务,从而提高性能。,不仅可以启动线程,还可以对任务执行结果进行管理,例如结果的阻塞获取、超时等待等。原创 2024-12-19 21:00:48 · 1255 阅读 · 0 评论 -
线性池学习
而线程是进程内的执行单元,多个线程共享进程的资源。浏览器进程有自己的内存空间、文件句柄,和其他应用程序(如文本编辑器)是独立的,它们之间无法直接访问对方的内存,只有通过某些特殊的通信手段(如网络、共享内存等)才能进行互动。因此,进程之间的资源是隔离的,一个进程无法直接访问另一个进程的内存数据,除非通过进程间通信(IPC,Inter-Process Communication)。在前面几章中,我们深入讨论了 Java 线程与进程的相关概念,线程调优的策略,以及 Java 线程可能面临的性能问题及其解决方案。原创 2024-12-18 20:53:54 · 967 阅读 · 0 评论
分享