大家好,我是鸭鸭!今天的鸭鸭依然在为大家更新维护程序员面试刷题平台面试鸭。
摸鱼的时候,鸭鸭刷到一条道歉信,一名猎头因为非法获取了包括奇安信在内的多家公司员工信息被抓后取保候审,希望通过道歉信获取奇安信的谅解书。
从道歉信和后续新闻报道看,她应该是通过离职的奇安信员工的内部沟通软件界面,未经许可获取了员工的姓名电话等个人信息。按她自述,她获得了近 1000 条通信录,涉及四五百名奇安信员工。
不过这个数据等准确性不好说,奇安信后续的回应称她所述内容多处与事实严重不符,具体信息要等宣判后才能披露。
鸭鸭听到的小道消息是,她是因为让助理大规模按通信录添加微信,才导致被抓。
靠非法渠道获取公司员工信息,既是侵犯别人隐私,也能算得上窃取公司商业秘密。即便是需要扩大自己通信录的猎头,通常也只会通过候选人之间的介绍获取新的候选人信息。
奇安信不是唯一的受害公司。不过这个瓜,看来还得等宣判才能知道更多信息。
好了,吃瓜到此结束,该进入今天的刷题时间了。下面来看今天的题目:
Java 线程池有哪些拒绝策略?
回答重点
一共提供了 4 种:
1)AbortPolicy,当任务队列满且没有线程空闲,此时添加任务会直接抛出 RejectedExecutionException 错误,这也是默认的拒绝策略。适用于必须通知调用者任务未能被执行的场景。
2)CallerRunsPolicy,当任务队列满且没有线程空闲,此时添加任务由即调用者线程执行。适用于希望通过减缓任务提交速度来稳定系统的场景。
3)DiscardOldestPolicy,当任务队列满且没有线程空闲,会删除最早的任务,然后重新提交当前任务。适用于希望丢弃最旧的任务以保证新的重要任务能够被处理的场景。
4)DiscardPolicy,直接丢弃当前提交的任务,不会执行任何操作,也不会抛出异常。适用于对部分任务丢弃没有影响的场景,或系统负载较高时不需要处理所有任务。
扩展知识
自定义拒绝策略
可以实现 RejectedExecutionHandler 接口来定义自定义的拒绝策略。例如,记录日志或将任务重新排队。
public class CustomRejectedExecutionHandler implements RejectedExecutionHandler {
@Override
public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) {
System.out.println("mianshiya.com Task " + r.toString() + " rejected");
// 可以在这里实现日志记录或其他逻辑
}
}
最后
再来推荐下我们的面试刷题网站和小程序:面试鸭!