可以使用LinkedBlockingQueue或者ArrayBlockingQueue等有界队列来实现。 拒绝策略:当线程池满了并且队列也满了时,可以通过设置拒绝策略来处理新的任务。常见的拒绝策略有:抛出异常、丢弃任务、丢弃队列中最旧的任务、将任务分给调用线程来执行等。可以使用RejectedExecutionHandler接口的实现类来定义拒绝策略,并通过setRejected...
如果超过最大线程数,则走异常处理流程(直接抛异常;不处理,丢弃;将阻塞队列中最早的任务丢弃,然后将其放入阻塞队列) 二、异常处理方法: (一)线程池提交时submit: 1、try catch 2、用Future作为submit的结果,用future.get()方法,接收抛出的异常(future.get()方法要加try catch) (二)线程中处理异常: 处理未捕获...
3. 实现拒绝策略以处理无法加入队列的任务 当任务无法加入线程池队列时,线程池会调用拒绝策略来处理这些任务。Java线程池提供了几种默认的拒绝策略,如ThreadPoolExecutor.AbortPolicy(直接抛出异常)、ThreadPoolExecutor.CallerRunsPolicy(由调用者线程执行该任务)、ThreadPoolExecutor.DiscardPolicy(丢弃无法处理的任务,不抛出异...
要么释放闲置的线程 要么加大线程池的深度 如果都无法做到 保证程序不会溢出的情况下 提示用户线程满了