课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
并发编程开发是大都数软件编程开发项目在实施过程中都需要满足的一个编程开发需求,而本文我们就简单来了解和学习一下,并发任务执行与取消注意事项。
一、任务的提交和执行
多个并发任务通常使用执行器来执行,它能复用线程资源,把任务的创建和执行分离,使程序员能专注于任务的创建。执行器提供了两种任务提交方法:
1.提交无返回值的任务,execute();任务实现Runnable接口;
2.提交有返回值的任务,submit();任务实现Callable接口,返回值封装在Future接口中;
二、任务的取消和停止
有时候我们希望提前结束任务或线程,比如设置的超时时间到了,或用户取消了操作,或应用程序需要被快速关闭。线程的立即停止可能会造成共享数据处于不一致的状态(因此没有安全的抢占式方法来立即停止线程,只有协作式的机制),良好的程序设计需要能完善地处理失败,取消和关闭行为。即需要管理好任务的生命周期。
三、设置线程池的大小
线程是昂贵的资源,不能把线程池设置得过大,同时也要关注JVM进程总的线程数量,尽量减少应用的线程数量,提高线程的利用率。线程过多不但占用更多内存,也增加了线程上下文切换的开销,导致cpu的利用非常低效。线程池大小的设置目标是:线程无空闲,任务无等待。
四、QueueSize设置
queueSize设置的目标是:高峰期能触发创建新的线程使线程数量扩充到maximumPoolSize,其他时段线程数量维持在corePoolSize,同时不会触发饱和策略。
任务队列长度queueSize的设置主要根据:corePoolSize,单位时间产生的任务数量,单个任务处理时间,以及对任务等待时间的上限决定。如果queueSize设置过大,那么无法使线程数量扩充到maximumPoolSize;如果queueSize设置过小,会容易使队列满,从而频繁触发线程池饱和策略(默认是AbortPolicy)。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。