![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程编程
文章平均质量分 92
DreamBoy_W.W.Y
不愿做菜鸟的小鸟,不断学习,目标是成为老鸟。
展开
-
【多线程编程】--ThreadLocal、InheritableThreadLocal(ITL)、TransmittableThreadLocal(TTL)解析
最近项目中,有个同事开发中定义了一个全局变量,为了防止数据混乱【并发请求这个接口时不同线程操作,会影响变量值】,他加了一个锁,这就大大影响了性能。我默默推荐了ThreadLocal,说可以解决他的问题。最后他虽然用了ThreadLocal,但又遇到问题,说代码执行到后面发现值莫名被置空了【看了代码发现,为了不影响返回结果,异步执行了一部分业务】。。。。。基于项目中使用到了ThreadLocal,同时一些复杂的场景,所以这篇文章将介绍ThreadLocal系列的原理,以便更好的使用。原创 2023-02-11 18:32:10 · 561 阅读 · 0 评论 -
【多线程编程】--任务调度类ThreadPoolTaskScheduler、ScheduledThreadPoolExecutor解析
springboot的常见的任务调度这篇文章介绍了一些常见的任务调度技术方法。接下来,将会对ThreadPoolTaskScheduler、ScheduledThreadPoolExecutor进行对比。通过简单使用、源码实现、优缺点等来分析,以便在各种应用场景上使用相应技术。下面介绍的技术主要是针对 非分布式环境下可以考虑采用。ScheduledThreadPoolExecutor适用场景:主要是延迟一次性任务、周期性任务;原创 2023-01-15 17:34:07 · 2053 阅读 · 0 评论 -
【多线程编程】--队列queue解析
queue常见方法如下:queue队列常见又分为阻塞和非阻塞,这篇文章,主要介绍常使用的几个队列:PriorityQueue、SynchronousQueue、LinkedBlockingQueue、DelayQueue。原创 2023-02-05 22:22:56 · 407 阅读 · 0 评论 -
【多线程编程】---多线程简述
当有线程调用了对象的 notifyAll()方法(唤醒所有 wait 线程)或 notify()方法(只随机唤醒一个 wait 线程),被唤醒的的线程便会进入该对象的锁池中,锁池中的线程会去竞争该对象锁。:运行的线程执行wait()方法,该线程会释放占用的所有资源,JVM会把该线程放入“等待池”中。当childThread线程run()执行完后,会调用notifyAll(),这样在等待队列的线程被唤醒,parentThread将进入同步队列,开始竞争监视锁,获得锁后,join()后面的操作。原创 2020-08-30 16:22:39 · 515 阅读 · 1 评论 -
【多线程编程】--ThreadPoolExecutor解析
getTask()方法就是去阻塞队列中取任务,用户设置的存活时间,就是从这个阻塞队列中取任务等待的最大时间,如果getTask返回null,意思就是woker等待了指定时间仍然没有取到任务,此时就会跳过循环体,进入woker线程的销毁逻辑。线程池做的工作主要是控制运行的线程的数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,如果线程数量超过了最大数量超出数量的线程排队等候,等其它线程执行完毕,再从队列中取出任务来执行。线程池维护一批线程处理用户提交的任务,维护的一批线程就是封装成Worker。原创 2023-02-05 09:34:02 · 976 阅读 · 0 评论