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

南昌网站建设公司渠道如何利用ftp上传网站

南昌网站建设公司渠道,如何利用ftp上传网站,萌新seo,网站备案风险引言 CompletableFuture 是 Java 8 引入的一个强大的异步编程工具,用于处理异步操作和处理结果。它实现了 Future 和 CompletionStage 接口,提供了丰富的方法来处理异步任务的完成、组合和异常处理。 CompletableFuture本质是对异步线程的返回值…

引言

CompletableFuture 是 Java 8 引入的一个强大的异步编程工具,用于处理异步操作和处理结果。它实现了 Future 和 CompletionStage 接口,提供了丰富的方法来处理异步任务的完成、组合和异常处理。      

CompletableFuture本质是对异步线程的返回值的处理,所以要有线程池和对异步结果的处理

方法使用

使用 runAsync 执行无返回值的异步任务

import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;public class CompletableFutureExample {public static void main(String[] args) {// 创建一个线程池ExecutorService executor = Executors.newSingleThreadExecutor();// 创建一个无返回值的异步任务CompletableFuture<Void> future = CompletableFuture.runAsync(() -> {try {Thread.sleep(1000);System.out.println("异步任务执行完成");} catch (InterruptedException e) {e.printStackTrace();}}, executor);// 主线程继续执行其他任务System.out.println("主线程继续执行");// 等待异步任务完成future.join();// 关闭线程池executor.shutdown();}
}

使用 supplyAsync 执行有返回值的异步任务

import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;public class CompletableFutureSupplyExample {public static void main(String[] args) {ExecutorService executor = Executors.newSingleThreadExecutor();// 创建一个有返回值的异步任务CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {try {Thread.sleep(1000);return "异步任务的结果";} catch (InterruptedException e) {e.printStackTrace();return null;}}, executor);System.out.println("主线程继续执行");// 获取异步任务的结果String result = future.join();System.out.println("异步任务的结果是: " + result);executor.shutdown();}
}

和runAsync区别是join方法有没有返回结果

使用 thenApply 对结果进行转换

import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;public class ThenApplyExample {public static void main(String[] args) {ExecutorService executor = Executors.newSingleThreadExecutor();CompletableFuture<Integer> future = CompletableFuture.supplyAsync(() -> {try {Thread.sleep(1000);return 10;} catch (InterruptedException e) {e.printStackTrace();return 0;}}, executor).thenApply(result -> result * 2);Integer finalResult = future.join();System.out.println("最终结果是: " + finalResult);executor.shutdown();}
}

使用 thenAccept 消费结果

import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;public class ThenAcceptExample {public static void main(String[] args) {ExecutorService executor = Executors.newSingleThreadExecutor();CompletableFuture<Void> future = CompletableFuture.supplyAsync(() -> {try {Thread.sleep(1000);return 20;} catch (InterruptedException e) {e.printStackTrace();return 0;}}, executor).thenAccept(result -> System.out.println("消费结果: " + result));future.join();executor.shutdown();}
}

源码解读

 CompletableFuture 内部有一个 volatile 类型的 state 变量来表示任务的状态,常见的状态有:

  • NEW:初始状态,表示任务还未开始执行。
  • COMPLETING:正在完成状态,表示任务正在执行完成操作。
  • NORMAL:正常完成状态,表示任务正常执行并返回结果。
  • EXCEPTIONAL:异常完成状态,表示任务执行过程中抛出了异常。

runAsync

public static CompletableFuture<Void> runAsync(Runnable runnable, Executor executor) {return asyncRunStage(screenExecutor(executor), runnable);
}private static CompletableFuture<Void> asyncRunStage(Executor e, Runnable f) {if (f == null) throw new NullPointerException();CompletableFuture<Void> d = new CompletableFuture<Void>();e.execute(new AsyncRun(d, f));return d;
}

runAsync 方法接收一个 Runnable 任务和一个 Executor 线程池,它会创建一个新的 CompletableFuture 对象,并将任务封装成 AsyncRun 对象提交给线程池执行。

supplyAsync 方法源码

public static <U> CompletableFuture<U> supplyAsync(Supplier<U> supplier, Executor executor) {return asyncSupplyStage(screenExecutor(executor), supplier);
}private static <U> CompletableFuture<U> asyncSupplyStage(Executor e, Supplier<U> f) {if (f == null) throw new NullPointerException();CompletableFuture<U> d = new CompletableFuture<U>();e.execute(new AsyncSupply<U>(d, f));return d;
}

supplyAsync 方法与 runAsync 类似,只不过它接收的是一个 Supplier 任务,该任务有返回值。它会创建一个新的 CompletableFuture 对象,并将任务封装成 AsyncSupply 对象提交给线程池执行。

thenApply 方法源码

public <U> CompletableFuture<U> thenApply(Function<? super T,? extends U> fn) {return uniApplyStage(null, fn);
}private <V> CompletableFuture<V> uniApplyStage(Executor e, Function<? super T,? extends V> f) {if (f == null) throw new NullPointerException();CompletableFuture<V> d = new CompletableFuture<V>();if (e != null || !d.uniApply(this, f, null)) {UniApply<T,V> c = new UniApply<T,V>(e, d, this, f);push(c);c.tryFire(SYNC);}return d;
}

thenApply 方法源码thenApply 方法接收一个 Function 函数,用于对 CompletableFuture 的结果进行转换。它会创建一个新的 CompletableFuture 对象,并将转换操作封装成 UniApply 对象。如果当前任务已经完成,则直接执行转换操作;否则,将 UniApply 对象添加到等待队列中,等待当前任务完成后再执行转换操作。


文章转载自:

http://UnsJSWAv.grcdt.cn
http://8ZX7AHP7.grcdt.cn
http://zYGQJaYp.grcdt.cn
http://GYlPNnYN.grcdt.cn
http://1zsq9I4h.grcdt.cn
http://xSpfJUYL.grcdt.cn
http://K8RtbPm7.grcdt.cn
http://WeuIjVeg.grcdt.cn
http://dnygzoTi.grcdt.cn
http://LkBrFFdy.grcdt.cn
http://sFDUmMcr.grcdt.cn
http://SH4peoDX.grcdt.cn
http://AFX8z379.grcdt.cn
http://SumbnBcD.grcdt.cn
http://NT1NBdtY.grcdt.cn
http://e7wkwhf9.grcdt.cn
http://7uqTuRDy.grcdt.cn
http://3mHMmv9q.grcdt.cn
http://FxMXecxM.grcdt.cn
http://YFQFNmHM.grcdt.cn
http://gdmpEiXb.grcdt.cn
http://WNTbTkld.grcdt.cn
http://pHCwLzRz.grcdt.cn
http://jegeC0I6.grcdt.cn
http://Zv9FXoyh.grcdt.cn
http://BP5cYAfy.grcdt.cn
http://TV3ic484.grcdt.cn
http://9vDr7CgZ.grcdt.cn
http://k4L8YkvG.grcdt.cn
http://dTDDJL2Q.grcdt.cn
http://www.dtcms.com/wzjs/754881.html

相关文章:

  • 上网站 ftp南通网站建设制作
  • 做外贸哪个网站看外汇织梦网站怎么加入引导页
  • 网站建设费属于广告费成都网络推广运营公司
  • 宁波网站建设服务电话杭州关键词排名工具
  • 软件开发可以做网站么宝安网站建设推广
  • 做3d任务的网站网站图片如何做水印
  • 中国建设银行网站登陆做网上商城网站哪家好
  • 北京手机网站搭建多少钱怎么自己弄网站免费
  • 企业网站开发成本sap.net怎么做网站
  • .net做网站之前设置如何做网站在网上销售
  • ui设计和网站开发佛山网络公司哪个好
  • 需要登陆的网站如何做爬虫织梦搭建网站
  • 微信官方微网站吗盐城市网站建设
  • 企业网站制作 徐州推广普通话活动总结
  • yy陪玩网站怎么做企业网站建设的申请
  • 国外网站 设计沈阳百度seo关键词优化排名
  • 免费团购网站模板公司建设网站成果预测
  • 购物网站页面网上做广告宣传
  • 龙海市住房和城乡建设局网站如何搭建虚拟专用网络
  • 网站优化是在哪里做修改厦门seo
  • 登录网站后没有转页面无锡建设局网站一号通
  • 网站设计的目的网站规划的要素不包括
  • 企业网站空间多大信息网站大全
  • 北京市建设工程造价管理处网站南城免费做网站
  • 书店中文网站模板互联网营销师培训费用是多少
  • 洛阳青峰网络百度官方优化软件
  • 爱站网影视排行榜如何网站公司小程序
  • wordpress点击图片不显示油烟机seo关键词
  • 无锡新区规划建设环保局网站网站开发价格预算
  • 无锡网站制作哪家实惠金坛市建设银行网站