
多线程
文章平均质量分 64
NIIMP
A Niimper
展开
-
一文认识ThreadLocal、了解ThreadLocal与Synchronized的区别
ThreadLocal叫做,意思是ThreadLocal中属于当前线程,该变量对其他线程而言是隔离的,也就是说该变量是当前线程独有的变量。ThreadLocal为变量在每个线程中都创建了一个副本,那么每个线程可以访问自己内部的副本变量。原创 2023-10-11 00:00:00 · 243 阅读 · 0 评论 -
一文拿捏线程和线程池的创建方式
继承 Thread 类并重写 run方法创建线程,实现简单但不可以继承其他类;实现 Runnable 接口并重写 run 方法,避免了单继承局限性,编程更加灵活,实现解耦;实现 Callable 接口并重写 call 方法,创建线程。可以获取线程执行结果的返回值,并且可以抛出异常;使用线程池创建。原创 2023-10-10 00:00:00 · 77 阅读 · 0 评论 -
一文拿捏线程的生命周期
Blocked(阻塞):当线程被阻塞时,它暂停执行,并且不会占用CPU资源。Timed Waiting(计时等待):与等待状态类似,但是线程在等待一段特定的时间后会自动唤醒。方法执行完毕或者出现了未捕获的异常时,线程进入终止状态。在终止状态下,线程不会再执行任何代码。Waiting(等待):线程在等待某个特定条件满足时进入等待状态。New(新建):当线程对象被创建时,它处于新建状态。方法使自己进入等待状态,并且只能通过其他线程的通知或者等待时间结束来唤醒。此时,线程已经准备好运行,并且等待系统的调度。原创 2023-10-10 00:00:00 · 150 阅读 · 0 评论 -
一文理清Run()与start()、wait()和sleep()的区别
🌟锁性质不同wait在等待的时候,会释放锁 sleep在睡眠的时候,是抱着锁睡眠,即不会是释放锁所属类不同wait Object 方法sleep Thread基类方法线程进入状态不同调用 sleep 方法线程会进入 TIMED_WAITING 有时限等待状态调用无参数的 wait 方法,线程会进入 WAITING 无时限等待状态唤醒时机不同wait 必须要使用notifyAll() 手动唤醒sleep有两种唤醒手段 第一种时间到 第二种Thread.interupt()原创 2023-10-09 11:25:58 · 223 阅读 · 0 评论 -
一文拿捏线程池
1 概念线程池是一种用于管理线程的机制,核心思想是资源复用,避免频繁地创建和销毁线程所带来的性能开销。2 原理线程池的原理是预先创建一定数量的线程,并将它们放入一个线程池中。当有任务需要执行时,从线程池中取出一个空闲线程来执行该任务,如果所有线程都在忙,则任务会被放入队列中等待JUC的工具类也会提供一些实例化线程池的方法,但是我们项目中并没有使用,因为都会有潜在的OOM风险,所以我们是对这些参数做了定制,具体是这样的corePoolSize(核心线程数):cpu+1 这个参数要根据具体的服务器配置来定m原创 2023-10-09 11:18:51 · 90 阅读 · 0 评论 -
多线程异步编排
JUC的工具类也会提供一些实例化线程池的方法,但是我们项目中并没有使用,因为都会有潜在的OOM风险,所以我们是对这些参数做了定制,具体是这样的(核心线程数):cpu+1 这个参数要根据具体的服务器配置来定(救急线程):cpu核数*2 这个参数我们考虑到能够对任务处理最大化,设置的都比较大(救急线程过期时间):60unit(时间单位):一般是s(线程工厂) :我们项目采用的默认提供的(阻塞队列) :这个参数首光要保证的有界,其次,再根据是否有对执行有效有更高要求的场景。原创 2023-09-07 21:03:27 · 387 阅读 · 0 评论