- 博客(31)
- 资源 (2)
- 收藏
- 关注
原创 并发编程(十)-ScheduledThreadPoolExecutor源码分析
ScheduledThreadPoolExecutor 是 Java 中的一个线程池实现,它继承自 ThreadPoolExecutor 类,并实现了 ScheduledExecutorService 接口,ScheduledThreadPoolExecutor内部维护了一个任务队列和一组线程,可以执行周期性和延迟性任务,并且可以动态地调整线程池的大小。
2023-04-07 21:18:02
439
原创 并发编程(九)-ScheduledExecutorService源码分析
ScheduledExecutorService 是 Java 并发包中提供的一个接口,继承ExecutorService接口,是Executor框架的一个扩展。它可以用于调度任务在指定的时间或周期性地执行。相比于 Timer 和 TimerTask,ScheduledExecutorService 提供了更加灵活的任务调度机制,可以控制任务的取消、延迟、周期等,同时也支持并发执行多个任务。
2023-03-28 08:30:00
1459
原创 并发编程(八)-Executors源码分析
Executors是Java标准库中的一个工具类,用于管理和创建线程池。可以更加方便地管理线程的创建、调度和回收,达到简化多线程编程的目的。
2023-03-27 09:00:00
454
原创 并发编程(七)-ThreadPoolExecutor源码分析(二)
如果允许核心线程超时回收,或者当前线程池中正在运行的 Worker 线程数大于核心线程数,则将 timed 设为 true,表示当前线程池中的 Worker 线程需要被回收。如果线程池的运行状态为SHUTDOWN以下,或者运行状态为SHUTDOWN且要添加的任务为null,则将新的工作线程添加到工作线程列表workers中,并更新最大线程池大小largestPoolSize。获取Worker对象中的锁,如果线程池处于STOP状态或者线程被中断并且线程池处于STOP状态或者线程被中断,则中断该线程。
2023-03-26 08:52:00
487
原创 并发编程(七)-ThreadPoolExecutor源码分析(一)
拒绝策略是一种处理无法添加到线程池的任务的方法,通过拒绝策略,我们可以决定如何处理任务,例如抛出异常、直接丢弃任务、阻塞任务、将任务交给调用线程执行等等。线程池中的线程可以执行提交的任务,通过统一管理和复用线程,可以避免频繁创建和销毁线程,从而减少了线程创建和销毁的开销,提高了程序的性能。提高程序的可扩展性:通过调整线程池的参数和使用不同的队列和策略,可以灵活地配置线程池,满足不同的需求,提高了程序的可扩展性。SHUTDOWN 状态可以在工作队列和线程池均为空时转换为 TIDYING 状态。
2023-03-25 08:00:00
442
原创 并发编程(六)-AbstractExecutorService源码分析
AbstractExecutorService是一个抽象类,实现了ExecutorService接口,提供了线程池的基本实现。它是Java Executor框架的核心类,提供了线程池的基本操作,如提交任务、管理线程池、执行任务等。
2023-03-24 21:15:55
808
1
原创 并发编程(五)-ExecutorService源码分析
ExecutorService 是 Java 中的一个接口,它扩展了 Executor 接口,并提供了更多的方法来处理多线程任务。它是 Java 中用于执行多线程任务的框架之一,可以创建一个线程池,将多个任务提交到线程池中执行。ExecutorService 接口提供了许多方法,如 shutdown()、shutdownNow()、submit()、execute()、invokeAll() 等,可以更方便地提交任务、执行任务、关闭线程池等操作。
2023-03-23 08:00:00
1282
原创 并发编程(四)-InheritableThreadLocal 源码分析
这意味着,当一个线程创建了一个子线程时,子线程可以访问父线程中的 InheritableThreadLocal 变量的值,而不是创建一个新的变量。childValue(T parentValue) 方法:该方法是一个回调方法,用于在子线程中创建该变量的值。在 Web 应用程序中,将用户信息存储在 InheritableThreadLocal 变量中,这样在处理用户请求的过程中,不同的线程都可以访问到用户信息,而且在子线程中也可以继承父线程的用户信息,从而避免了在不同的线程中反复传递用户信息的麻烦。
2023-03-22 08:00:00
294
原创 并发编程(三)-ThreadLocal源码分析(二)
否则,返回 null。:属性的主要作用是用于哈希表的扩容。如果找到了一个Entry对象,且该对象对应的ThreadLocal对象与key相等,则说明找到了要替换的Entry对象,将其值赋值为value,并将其和staleSlot位置上的Entry对象交换位置,然后调用expungeStaleEntry方法删除slotToExpunge和之后的过期Entry对象。该操作可以用于在当前线程中创建一个新的ThreadLocalMap对象,并将父线程中的数据复制到新的对象中,以便新线程可以访问父线程中存储的数据。
2023-03-21 21:54:23
412
原创 并发编程(三)-ThreadLocal源码分析(一)
如果ThreadLocalMap对象不存在,说明当前线程还没有ThreadLocalMap对象,此时需要使用createMap方法为其创建一个ThreadLocalMap对象,并将ThreadLocal对象和初始值保存到其中。如果ThreadLocalMap对象不存在,说明当前线程还没有ThreadLocalMap对象,此时需要使用createMap方法为其创建一个ThreadLocalMap对象,并将ThreadLocal对象和值保存到其中。用于获取当前线程中ThreadLocal对象对应的值。
2023-03-20 22:17:32
224
原创 eclispe中的maven项目使用spring报java.lang.ClassNotFoundException: org.springframework.web.c
maven项目运行时报: java.lang.ClassNotFoundException: org.springfraork.web.context.ContextLoaderListenermew
2016-09-05 10:03:43
394
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人