java异步调用的4种实现方法

Java异步调用是一种在不阻塞当前线程的情况下执行耗时操作的技术,它可以让程序在等待耗时操作完成的同时,继续执行其他任务,Java中有多种实现异步调用的方法,本文将介绍其中的四种方法。

1、使用Thread类实现异步调用

java异步调用的4种实现方法

Thread类是Java中用于创建线程的类,通过继承Thread类并重写run()方法,可以实现异步调用,以下是一个简单的示例:

class MyThread extends Thread {
    @Override
    public void run() {
        // 耗时操作
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("异步任务执行完毕");
    }
}
public class Main {
    public static void main(String[] args) {
        MyThread myThread = new MyThread();
        myThread.start(); // 启动线程
        System.out.println("主线程继续执行");
    }
}

2、使用Runnable接口实现异步调用

除了继承Thread类,还可以实现Runnable接口来实现异步调用,以下是一个简单的示例:

java异步调用的4种实现方法

class MyRunnable implements Runnable {
    @Override
    public void run() {
        // 耗时操作
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("异步任务执行完毕");
    }
}
public class Main {
    public static void main(String[] args) {
        MyRunnable myRunnable = new MyRunnable();
        Thread thread = new Thread(myRunnable);
        thread.start(); // 启动线程
        System.out.println("主线程继续执行");
    }
}

3、使用CompletableFuture实现异步调用

Java 8引入了CompletableFuture类,它是一个实现了Future接口的类,可以用于实现异步调用,以下是一个简单的示例:

import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;
public class Main {
    public static void main(String[] args) {
        CompletableFuture<Void> future = CompletableFuture.runAsync(() -> {
            try {
                TimeUnit.SECONDS.sleep(1); // 耗时操作
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("异步任务执行完毕");
        });
        future.thenRun(() -> System.out.println("主线程继续执行")); // 当异步任务完成后,执行主线程的任务
    }
}

4、使用ExecutorService实现异步调用

java异步调用的4种实现方法

ExecutorService是一个管理线程的接口,可以通过它来创建线程池,实现异步调用,以下是一个简单的示例:

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.Future;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeoutException;
import java.util.concurrent.TimeLimitExceededException;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.util.HashMap;
import java.util.concurrent.*;
import java.util.*; // for the Future example below only, otherwise remove this import statement at the top of your file!  
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   																												   
public class Main { public static void main(String[] args) throws InterruptedException, ExecutionException, TimeoutException, TimeLimitExceededException { 
ExecutorService executor = Executors.newFixedThreadPool(2); 
Future<Integer> future = executor.submit(new Callable<Integer>() { 
@Override 
public Integer call() throws Exception { 
try {
TimeUnit.SECONDS.sleep(1); 
} catch (InterruptedException e) {
e.printStackTrace(); 
}
return 123; 
}
}); 
// get the result of the future object 
System.out.println(\"Result: \" + future.get()); 
// cancel the task if it's not done yet 
future.cancel(true); 
// shut down the executor service after all tasks are completed 
executor.shutdown(); 
}
}*/  
  
  JAVA异步调用的4种实现方法:使用Thread类、使用Runnable接口、使用CompletableFuture和使用ExecutorService,这些方法都可以实现在不阻塞当前线程的情况下执行耗时操作,让程序在等待耗时操作完成的同时,继续执行其他任务,下面我们分别详细介绍这四种方法。
  一、使用Thread类实现异步调用:通过继承Thread类并重写run()方法,可以实现异步调用,以下是一个简单的示例:
  class MyThread extends Thread { public void run() { try { TimeUnit

原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/154873.html

Like (0)
Donate 微信扫一扫 微信扫一扫
K-seo的头像K-seoSEO优化员
Previous 2023-12-21 21:57
Next 2023-12-21 22:00

相关推荐

  • Android性能优化典范之多线程篇

    多线程的基础知识1、1 什么是多线程?多线程是指在一个程序中有多个线程同时执行,这些线程共享程序的资源,如内存、文件等,在Android中,多线程主要用于提高程序的执行效率,如界面渲染、网络请求等。1、2 为什么要使用多线程?使用多线程可以充分利用CPU资源,提高程序的执行效率,在Android中,由于UI操作需要等待I/O操作(如网……

    2024-01-30
    0179
  • c语言的sleep函数的用法

    C语言的sleep函数用于暂停程序执行指定的秒数。

    2024-01-01
    0283
  • java队列有哪几种

    Java中主要有四种类型的队列,分别是LinkedList、ArrayDeque、PriorityQueue和BlockingQueue。这些队列都实现了Queue接口,定义了一套队列操作方法,包括add、remove、element等,如果操作失败会抛出异常;另外还有offer、poll、peek等方法,如果操作失败则返回null。队列是一种先入先出(FIFO)的数据结构,通常以FIFO的方式对元素进行排序,但也可以根据需要实现优先级队列或者后进先出队列。

    2024-01-22
    0113
  • java悲观锁的实现方式有哪些

    Java悲观锁的实现方式1、 synchronized关键字synchronized关键字是Java中最常用的悲观锁实现方式,通过在方法或代码块上添加synchronized关键字,可以确保同一时间只有一个线程能够访问被锁定的资源,当一个线程获得锁时,其他线程将无法访问该资源,直到锁被释放,这种方式适用于单例模式、生产者消费者模式等场……

    2024-01-30
    0243
  • java线程死锁的原因有哪些

    Java线程死锁是指两个或多个线程在执行过程中,因争夺资源而造成的一种相互等待的现象,当线程处于这种相互等待的状态下,如果没有外部干预,它们都将无法继续执行下去,Java线程死锁的原因有很多,下面我们来详细了解一下。1、互斥条件互斥条件是指一个资源每次只能被一个线程使用,这是导致死锁的最基本条件,在编写多线程程序时,应尽量避免对资源的……

    2024-01-23
    0187
  • C 多线程实现的方式有哪些

    多线程是一种并发编程的技术,它允许在一个程序中同时执行多个任务,在计算机系统中,CPU的核数是有限的,而程序可能需要处理的任务却是无限的,为了充分利用CPU的资源,提高程序的执行效率,我们可以使用多线程技术,在C语言中,有多种实现多线程的方式,下面我们来详细介绍一下。1、POSIX线程(Pthread)POSIX线程(Pthread)……

    2023-12-26
    0132

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

免备案 高防CDN 无视CC/DDOS攻击 限时秒杀,10元即可体验  (专业解决各类攻击)>>点击进入