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

网站优化怎么看2020十大网络热词

网站优化怎么看,2020十大网络热词,做慕斯蛋糕那个网站有视频,做外贸好的网站核心对比总表&#xff08;Callable vs Runnable&#xff09;维度RunnableCallable接口定义public interface Runnablepublic interface Callable<V>核心方法void run()V call() throws Exception返回值❌ 无返回值✅ 可返回泛型结果异常处理❌ 只能处理非受检异常✅ 可抛…

核心对比总表(Callable vs Runnable)

维度RunnableCallable
接口定义public interface Runnablepublic interface Callable<V>
核心方法void run()V call() throws Exception
返回值❌ 无返回值✅ 可返回泛型结果
异常处理❌ 只能处理非受检异常✅ 可抛出任意受检/非受检异常
执行方式Thread/Executor.execute()ExecutorService.submit()[也可以通过Thread执行,一般不用]
适用场景简单异步任务需要结果/异常处理的复杂任务

1. 接口定义与核心方法

Runnable(Java 1.0引入)

@FunctionalInterface
public interface Runnable {// 无参数、无返回值、无异常声明void run();
}

使用示例:

Runnable printTask = () -> {System.out.println("执行Runnable任务");// 不能返回结果,不能抛出受检异常
};// 执行方式
new Thread(printTask).start();
// 或
executor.execute(printTask);

Callable(Java 5引入)

public interface Callable<V> {// 返回泛型结果,可抛出任何异常V call() throws Exception;
}

使用示例:

Callable<Integer> calcTask = () -> {System.out.println("执行Callable任务");if (Math.random() > 0.8) {throw new IOException("模拟IO异常");}return 42; // 返回计算结果
};// 执行方式
ExecutorService executor = Executors.newSingleThreadExecutor();
Future<Integer> future = executor.submit(calcTask);//使用Thread也可以,但是Callable不推荐用
FutureTask<Integer> future = new FutureTask(calcTask);
Thread t = new Thread(future);
Integer integer = future.get(); //可以获取到calcTask 返回的结果【42】

2. 异常处理机制对比

Runnable的异常困境

Runnable fileTask = () -> {try {Files.copy(source, target); // 可能抛出IOException} catch (IOException e) {// 只能转为非受检异常throw new RuntimeException(e);}
};// 未捕获异常会导致线程终止
Thread t = new Thread(fileTask);
//使用 Thread.setUncaughtExceptionHandler为线程设置异常处理器,当线程因未捕获的异常终止时会触发该处理器。
//不用Thread.setUncaughtExceptionHandler 线程x就会报错
t.setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {@Overridepublic void uncaughtException(Thread t, Throwable e) {System.out.println("捕获到异常: " + e.getMessage());// 可以在这里记录日志、通知其他组件等}
});
t.start();

Callable的完整异常链

Callable<String> dbTask = () -> {if (dbConnection.isClosed()) {throw new SQLException("数据库未连接");}return fetchData();
};Future<String> future = executor.submit(dbTask);try {String data = future.get();process(data);
} catch (ExecutionException e) {Throwable cause = e.getCause(); // 获取原始异常if (cause instanceof SQLException) {reconnectDatabase();}
}
http://www.dtcms.com/wzjs/495454.html

相关文章:

  • wordpress样式冲突何鹏seo
  • 上海营销型网站建设哪家好长沙整合推广
  • dw做网站首页怎么做网络营销的主要方式
  • 可以安装两个wordpress成都seo优化推广
  • 网站建设类岗位重庆seo网络推广优化
  • 如何创做网站原创软文
  • 天津网站营销广州网站建设推广专家
  • 帝国cms 做的完整的网站有没有百合seo培训
  • 目录浏览的网站win7优化教程
  • 160 国际英文网站优化seo是什么
  • 如何做代刷网站长企业营销策划书范文
  • 广东注册公司代办搜索引擎优化师工资
  • 南沙哪有做网站的营销型网站建设公司价格
  • 自己做返利网站吗网络营销推广主要做什么?
  • 凡科建站建网站宁波谷歌seo
  • 女孩做网站运营好吗肇庆疫情最新情况
  • 做废旧金属的网站上海优化网站公司哪家好
  • 清洁海绵的网站怎么做长春网站seo
  • 电子商务网站建设与网页设计win10系统优化软件
  • 宝山网站建设公司网站提交入口
  • 做搜狗网站优化点击百度云搜索引擎入口百度网盘
  • 票务网站策划书网络营销技巧培训班
  • app开发分为哪几种排名seo怎么样
  • b2b平台网站开发东莞搜索seo网站关键词优化
  • php网站开发简历seo营销名词解释
  • 如何建立一个带论坛的网站系统优化app最新版
  • wordpress 编写页面代码公司排名seo
  • 大连p2p网站建设搜什么关键词能找到网站
  • 关于做网站的合同营销网站建设大概费用
  • 青岛建站费用培训报名