当前位置: 首页 > news >正文

能够做一镜到底的网站合肥建行网站

能够做一镜到底的网站,合肥建行网站,徐州模板建站定制网站,app商城系统前言#xff1a; 在编写程序时#xff0c;我们为了充分利用多核CPU、加快接口响应速度#xff0c;通常会使用线程池来处理请求#xff0c;但线程池执行任务过程中难免会出现异常#xff0c;导致请求失败。那如果我们想在任务发生异常后捕获异常#xff0c;并做一些”善后…前言 在编写程序时我们为了充分利用多核CPU、加快接口响应速度通常会使用线程池来处理请求但线程池执行任务过程中难免会出现异常导致请求失败。那如果我们想在任务发生异常后捕获异常并做一些”善后“操作该如何做呢 捕获方案 1、try、catch public class ExceptionHandle {public static void main(String[] args) {ThreadPoolExecutor executor new ThreadPoolExecutor(1,2,30,TimeUnit.SECONDS,new LinkedBlockingQueue());executor.execute(() - {try {//模拟业务代码出现异常int i 1 / 0;}catch (Exception e){System.err.println(e.getMessage());}});executor.shutdown();} } 原理在编码时提前预知业务代码可能会发生异常并用try块捕获业务异常并在catch块做善后工作。         2、FutureTask public class ExceptionHandle {public static void main(String[] args) {ThreadPoolExecutor executor new ThreadPoolExecutor(1,2,30,TimeUnit.SECONDS,new LinkedBlockingQueue());CallableInteger callable new CallableInteger() {Overridepublic Integer call() throws Exception {//模拟业务代码出现异常return 1/0;}};FutureTaskInteger task new FutureTaskInteger(callable);executor.submit(task);try {task.get();} catch (InterruptedException e) {e.printStackTrace();} catch (ExecutionException e) {//这里捕获的是真正的业务异常System.err.println(e.getCause().getMessage());}executor.shutdown();} } 原理FutureTask技能作为任务提交给线程执行也能像Future一样通过get()方法获取任务执行结果。如果任务正常执行那么返回的就是结果对象如果执行出现异常返回的就是异常对象当发生异常时try块就能捕获异常并在catch块做相应处理。get()方法实现如下 //可能会抛出InterruptedException、ExecutionException public V get() throws InterruptedException, ExecutionException {int s state;if (s COMPLETING)s awaitDone(false, 0L);return report(s);} InterruptedException是线程在等待执行结果时被其它线程打断所产生的异常。 用Future接口获取submit()方法的返回结果也能达到同样的效果对FutureTask不太了解的话可以看我的这篇博客【Java】浅析FutureTask的核心方法get-CSDN博客 3、ThreadFactor ​ public class ExceptionHandle {public static void main(String[] args) {//线程工厂用于给线程池创建的线程加上一些特征//你可以通过线程工厂指定线程的优先级、是否是守护线程等等ThreadFactory factory new ThreadFactory() {Overridepublic Thread newThread(Runnable r) {Thread t new Thread(r);//t.setUncaughtExceptionHandler((Thread thread,Throwable e) - {if(e ! null){System.err.println(e.getMessage());}});return t;}};ThreadPoolExecutor executor new ThreadPoolExecutor(1,2,30,TimeUnit.SECONDS,new LinkedBlockingQueue(),factory);executor.execute(() - {//模拟业务异常int i 1/0;});executor.shutdown();} }​ 原理 1ThreadFactor接口用于声明线程的属性如线程的优先级、名称、守护进程状态等它是线程池的构造参数之一如果创建线程池时传入了ThreadFactor线程池在创建线程时会按照ThreadFactor指定的形式来创建。 2我们让线程调用了setUncaughtExceptionHandler()方法这个方法需要一个参数UncaughtExceptionHandler接口当线程由于未捕获的异常而突然终止时会调用这个接口的uncaughtException()方法我们可以自定义这个方法的实现逻辑对异常做处理。相当于线程执行任务过程中如果出现异常那么就会回调uncaughtException()方法如下图所示。 如果本文对你有所帮助不妨点个赞支持一下
http://www.sadfv.cn/news/179717/

相关文章:

  • 网站开发的目的意义建设国家标准官方网站
  • 西宁网站建设开发宁波网站建设价格合理
  • php手机网站开发教程网站网站开发的公司
  • 你知道吗 网站辽宁建设工程信息网备案
  • 动易官方网站济南企业建设网站
  • html5旅游网站seo公司上海牛巨微
  • 织梦做的网站别人提交给我留的言我去哪里看国内新闻最新官方消息
  • 比较好的建立站点企业网站优化兴田德润
  • 手机制作钓鱼网站兰州网站建设和推广
  • 网站广告如何做网络优化器免费
  • 连锁店网站建设mysql导入wordpress
  • 房产网站建设接单网站上做旅游卖家要学什么软件
  • 企业网站备案要多少钱莱芜网络公司平台
  • 做餐饮要看的网站宜春的网站建设公司
  • 手机可做兼职的网站养育成本
  • 网站后台管理维护 不懂编程旅游网站开发公司
  • 为农村建设网站报告郑州不错的软件开发公司
  • 怎么查看网站百度快照网站建设方案总结评语
  • 网站建设的讲话稿网站服务器多少钱一年
  • 大型网站seo方案网址ip查询域名解析
  • 企业怎么做网站推广织梦网站打开空白
  • 装修网站是怎么建设的淄博高端网站建设
  • 网站建设的ppt模板建设银行网站登录不了
  • 科普网站建设自己做的网站加载速度慢
  • 建设网站需要做什么什么是网络营销啊
  • 常州装修网站建设公司重庆网站seo案例
  • 财务公司代理记账怎么收费淘宝怎么优化关键词步骤
  • 网站开发需求列表个人网站建站教程
  • 珠海建设企业网站的公司玉林建设信息网站
  • 北京网页网站设计制作wordpress如何页面静态