Rate this post

CompletableFuture là một lớp trong thư viện Java 8 Executor Framework, nó cung cấp các chức năng để tạo ra và quản lý các tác vụ bất đồng bộ (asynchronous task) trong Java. Nó cung cấp các phương thức để tạo ra, quản lý và tương tác với các tác vụ bất đồng bộ mà không cần sử dụng các thread và các đối tượng Future riêng biệt.

Các bài viết liên quan:

Ví dụ:

CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
    try {
        TimeUnit.SECONDS.sleep(1);
    } catch (InterruptedException e) {
        throw new IllegalStateException(e);
    }
    return "Hello";
}).thenApply(s -> s + " World");

System.out.println(future.get());

Trong ví dụ trên, tác vụ supplyAsync() được tạo ra và chạy bất đồng bộ, sau đó sử dụng phương thức thenApply() để thêm chuỗi ” World” vào kết quả.

CompletableFuture có nhiều chức năng khác nhau giúp cho việc quản lý và tương tác với các tác vụ bất đồng bộ trong java trở nên dễ dàng hơn.

Tại sao nên sử dụng completablefuture trong java

Có nhiều lý do tại sao nên sử dụng CompletableFuture trong Java:

  1. Tăng hiệu suất: Sử dụng CompletableFuture giúp cho việc tạo ra và quản lý các tác vụ bất đồng bộ trở nên dễ dàng hơn, giúp tăng hiệu suất của chương trình.
  2. Giảm sự trùng lặp: Sử dụng CompletableFuture giúp giảm sự trùng lặp trong mã và giúp cho việc quản lý và tương tác với các tác vụ bất đồng bộ trở nên dễ dàng hơn.
  3. Tăng khả năng mở rộng: CompletableFuture cung cấp nhiều chức năng khác nhau giúp cho việc quản lý và tương tác với các tác vụ bất đồng bộ, giúp tăng khả năng mở rộng của chương trình.
  4. Tăng khả năng tái sử dụng: CompletableFuture cung cấp nhiều phương thức hữu ích để tái sử dụng tác vụ bất đồng bộ trong chương trình.
  5. Tăng khả năng điều khiển: CompletableFuture cung cấp các 

phương thức để điều khiển và quản lý tác vụ bất đồng bộ, giúp cho việc quản lý và điều khiển chương trình trở nên dễ dàng hơn. Ví dụ, sử dụng phương thức thenApply() để thêm một tác vụ sau khi tác vụ gốc hoàn thành, hoặc sử dụng phương thức whenComplete() để thực hiện một hành động sau khi tác vụ hoàn thành.

Với tất cả các chức năng và lợi ích mà CompletableFuture cung cấp, nó là một công cụ quan trọng để tăng hiệu suất và tăng khả năng mở rộng của chương trình bất đồng bộ trong Java.

Một số ví dụ về completablefuture trong java

Ví dụ 1: Tạo và thực hiện tác vụ bất đồng bộ

CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
    try {
        TimeUnit.SECONDS.sleep(1);
    } catch (InterruptedException e) {
        throw new IllegalStateException(e);
    }
    return "Hello";
});

System.out.println(future.get());

Ví dụ 2: Tạo một tác vụ bất đồng bộ và thêm một tác vụ sau khi hoàn thành

CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
    try {
        TimeUnit.SECONDS.sleep(1);
    } catch (InterruptedException e) {
        throw new IllegalStateException(e);
    }
    return "Hello";
}}).thenApply(s -> s + " World");

System.out.println(future.get());

Ví dụ 3: Tạo một tác vụ bất đồng bộ và thực hiện một hành động sau khi hoàn thành

CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
    try {
        TimeUnit.SECONDS.sleep(1);
    } catch (InterruptedException e) {
        throw new IllegalStateException(e);
    }
    return "Hello";
}).whenComplete((result, error) -> {
    if (error != null) {
        System.out.println(error.getMessage());
    } else {
        System.out.println(result);
    }
});

Ví dụ 4: Tạo một tác vụ bất đồng bộ và chờ cho tác vụ hoàn thành

CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
    try {
        TimeUnit.SECONDS.sleep(1);
    } catch (InterruptedException e) {
        throw new IllegalStateException(e);
    }
    return "Hello";
});

future.join();
System.out.println("Task completed");

Các ví dụ trên minh họa cách sử dụng CompletableFuture để tạo và quản lý tác vụ bất đồng bộ trong Java. CompletableFuture cung cấp nhiều chức năng giúp cho việc quản lý và tương tác với các tác vụ bất đồng bộ trở nên dễ dàng hơn.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Contact Me on Zalo
Call now