首页 > 其他分享 >【JUC】6-CompletableFutrue 的4个核心静态方法

【JUC】6-CompletableFutrue 的4个核心静态方法

时间:2024-06-05 22:34:05浏览次数:13  
标签:JUC 静态方法 runAsync 线程 static CompletableFutrue CompletableFuture public

CompletableFutrue通过核心的4个静态方法,来创建一个异步任务

  • public static CompletableFuture<Void> runAsync(Runnable runnable)
 1 /**
 2  * public static CompletableFuture<Void> runAsync(Runnable runnable)  不指定线程池, 默认使用 ForkJoinPool.commonPool
 3  */
 4 public class CompletableFutrueDemo {
 5     public static void main(String[] args) throws ExecutionException, InterruptedException {
 6 
 7         CompletableFuture<Void> completableFuture = CompletableFuture.runAsync(() -> {
 8 
 9             System.out.println(Thread.currentThread().getName());
10 
11             try {
12                 TimeUnit.SECONDS.sleep(3);
13             } catch (InterruptedException e) {
14                 e.printStackTrace();
15             }
16         });
17 
18         System.out.println(completableFuture.get());
19     }
20 }

 

  • public static CompletableFuture<Void> runAsync(Runnable runnable, Executor executor)

 

  • public static <U> CompletableFuture<U> supplyAsync(Supplier<U> supplier)

 

  • public static <U> CompletableFuture<U> supplyAsync(Supplier<U> supplier, Executor executor)

 

上述Executor参数说明

没有指定Excutor的方法,直接使用默认的ForkJoinPool.commonPool()作为它的线程池执行异步代码

如果指定线程池,则使用我们自定义的或者特别指定的线程池执行异步代码

 

标签:JUC,静态方法,runAsync,线程,static,CompletableFutrue,CompletableFuture,public
From: https://www.cnblogs.com/zhaohan258/p/18234049

相关文章

  • 【JUC】5-CompletableFutrue对Futrue的改进
    get()方法在Futrue计算完成之前会一直处在阻塞状态下,isDeone()方法容易耗费CPU资源,对于真正的异步处理我们希望是可以通过传入回调函数,在Futrue结束时自动调用该回调函数,这样,我们就不用等待结果。 阻塞的方式和异步编程的设计理念相违背,而轮询的方式会耗费无谓的CPU资源。因......
  • 【JUC】4-FutrueTask结合线程池的应用
    1、通过线程池提交FutrueTask异步任务1publicstaticvoidmain(String[]args)throwsExecutionException,InterruptedException,TimeoutException{23longstart=System.currentTimeMillis();4ExecutorServiceexecutorService=Executors.n......
  • 【JUC】1-Java线程的启动
    以Thread创建线程为例:1Threadthread=newThread(){2@Override3publicvoidrun(){4log.info("createandstartathreadthroughcreatingaThreadObject");5}6};7thread.start();......
  • 【JUC】3-用户线程和守护线程
    一般情况下不做特别说明配置,默认都是用户线程 UserThread是系统的工作线程,它会完成这个程序需要完成的业务操作 DaemonThread是一种特殊的线程,为其它线程服务的,在后台默默的完成一些系统性的服务,比如垃圾回收线程就是最典型的例子守护线程作为一个服务线程,没有服务对象......
  • Java高并发核心编程.卷2,多线程、锁、JMM、JUC、高并发设计模式 (尼恩)电子版百度云
    书获取链接:python33  。c o  m我的阅读笔记:多线程:介绍Java多线程的基础概念,如线程的创建、启动、状态转换、线程间通信等。锁:深入探讨Java中的各种锁机制,包括内置锁(synchronized)、ReentrantLock、ReadWriteLock等,以及它们的使用场景和性能特点。Java内存模型(JMM):解释J......
  • 【JUC】2-一把“锁”两个“并”三个“程”(JAVA多线程相关概念)
    1、一把锁(synchronized)2、两个并(并发并行)并发是在同一实体上的多个事件,是在一台处理器上同时处理多个任务,同一时刻,其实是只有一个时间在发生并行是在不同实体上的多个事件,是在多台处理器上同时处理多个任务,同一时刻,大家真的都在做事情,互不影响3、三个程(进程线程管程)进程......
  • JUC并发编程第六章——volatile与JMM
    1被volatile修饰的变量有两大特点特点:可见性有序性:有排序要求,有时需要禁重排内存语义:当写一个volatile变量时,JMM会把该线程对应的本地内存中的共享变量值立即刷新回主内存中当读一个volatile变量时,JMM会把该线程对应的本地内存设置为无效,重新回到主内存中读取最新共享......
  • JUC并发编程第七章——CAS
    1原子类Java.util.concurrent.atomic2没有CAS之前多线程环境中不使用原子类保证线程安全i++(基本数据类型)常用synchronized锁,但是它比较重,牵扯到了用户态和内核态的切换,效率不高。publicclassT3{volatileintnumber=0;//读取publicintgetNum......
  • python中的静态方法:@staticmethod 原理及应用
    @staticmethod是一个Python装饰器,用于声明一个方法为静态方法。静态方法不接受特定的实例或类参数(即没有self或cls参数),它们可以直接通过类调用,而不需要创建类的实例。静态方法的行为更接近于普通的函数。这是一个例子:classMyClass:@staticmethoddefmy_method(x,y)......
  • JUC框架(Semaphore、CountDownLatch、CyclicBarrier)
    文章目录Semaphore(信号量)Semaphore介绍Semaphore基本概念Semaphore使用场景Semaphore示例CountDownLatch(计数器/闭锁)CountDownLatch介绍CountDownLatch基本概念CountDownLatch使用场景CountDownLatch基本方法CountDownLatch示例CyclicBarrier(循环栅栏)Cyclic......