3年工作经验,工作中还不会使用多线程?阿里P6:别慌,我都总结好了
通过以上说明,submit执行的使命,可以通过Future工具的get要领吸取抛出的非常,再举办处理赏罚。 我们再通过一个demo,看一下Future工具的get要领处理赏罚非常的姿势,如下图: ![]() 其他两种处理赏罚线程池非常方案 除了以上1.在使命代码try/catch捕捉非常,2.通过Future工具的get要领吸取抛出的非常,再处理赏罚两种方案外,尚有以上两种方案: 3.为事变者线程配置UncaughtExceptionHandler,在uncaughtException要领中处理赏罚非常 我们直接看这样实现的正确姿势:
运行功效: ![]() 4.重写ThreadPoolExecutor的afterExecute要领,处理赏罚转达的非常引用 这是jdk文档的一个demo:
因此,被问到线程池非常处理赏罚,怎样答复? ![]() 。线程池的事变行列 线程池都有哪几种事变行列?
ArrayBlockingQueueArrayBlockingQueue(有界行列)是一个用数组实现的有界阻塞行列,按FIFO排序量。 LinkedBlockingQueueLinkedBlockingQueue(可配置容量行列)基于链表布局的阻塞行列,按FIFO排序使命,容量可以选择举办配置,不配置的话,将是一个无界线的阻塞行列,最大长度为Integer.MAX_VALUE,吞吐量凡是要高于ArrayBlockingQuene;newFixedThreadPool线程池行使了这个行列 DelayQueueDelayQueue(耽误行列)是一个使命按时周期的耽误执行的行列。按照指定的执行时刻从小到大排序,不然按照插入到行列的先后排序。newScheduledThreadPool线程池行使了这个行列。 PriorityBlockingQueuePriorityBlockingQueue(优先级行列)是具有优先级的无界阻塞行列; SynchronousQueueSynchronousQueue(同部行列)一个不存储元素的阻塞行列,每个插入操纵必需比及另一个线程挪用移除操纵,不然插入操纵一向处于阻塞状态,吞吐量凡是要高于LinkedBlockingQuene,newCachedThreadPool线程池行使了这个行列。 针劈口试题:线程池都有哪几种事变行列? 我认为,答复以上几种ArrayBlockingQueue,LinkedBlockingQueue,SynchronousQueue等,说出它们的特点,并团结行使到对应行列的常用线程池(如newFixedThreadPool线程池行使LinkedBlockingQueue),举办睁开叙述, 就可以啦。 几种常用的线程池
newFixedThreadPool
线程池特点:
(编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |