Rumah  >  Artikel  >  Java  >  Aplikasi cekap teknologi asas Java: Bagaimana untuk melaksanakan pengaturcaraan tak segerak dan CompletableFuture

Aplikasi cekap teknologi asas Java: Bagaimana untuk melaksanakan pengaturcaraan tak segerak dan CompletableFuture

WBOY
WBOYasal
2023-11-08 12:16:541198semak imbas

Aplikasi cekap teknologi asas Java: Bagaimana untuk melaksanakan pengaturcaraan tak segerak dan CompletableFuture

Aplikasi cekap teknologi asas Java: Bagaimana untuk melaksanakan pengaturcaraan tak segerak dan CompletableFuture

Pengenalan: #🎜 pembangunan perisian moden 🎜🎜 Pengaturcaraan telah menjadi salah satu teknologi penting untuk meningkatkan prestasi sistem dan pengalaman pengguna. Sebagai bahasa pengaturcaraan yang digunakan secara meluas, Java menyediakan pelbagai mekanisme untuk melaksanakan pengaturcaraan tak segerak. Antaranya, CompletableFuture ialah alat pengaturcaraan tak segerak yang berkuasa dan fleksibel yang boleh memudahkan kod dan meningkatkan kecekapan. Artikel ini akan memperkenalkan pengaturcaraan tak segerak dan cara menggunakan CompletableFuture untuk mencapai pengaturcaraan tak segerak yang cekap. Dan menggambarkannya dengan contoh kod tertentu.

1. Apakah pengaturcaraan tak segerak?

Pengaturcaraan tak segerak ialah model pengaturcaraan yang membenarkan atur cara melaksanakan satu operasi semasa menjalankan operasi lain. Dalam pengaturcaraan segerak tradisional, apabila operasi berlaku, atur cara menunggu operasi selesai sebelum meneruskan ke langkah seterusnya. Dalam pengaturcaraan tak segerak, program boleh terus melaksanakan operasi lain tanpa menunggu operasi semasa selesai.

Pengaturcaraan tak segerak boleh meningkatkan prestasi serentak sistem dan membolehkan sistem mengatasi senario serentak tinggi dengan lebih baik. Dalam pembangunan sebenar, operasi tak segerak biasa termasuk permintaan rangkaian, membaca dan menulis fail, pertanyaan pangkalan data, dsb. Dengan menjadikan operasi ini tidak segerak, sistem boleh menggunakan sumber dengan lebih cekap dan meningkatkan kelajuan tindak balas sistem dan daya pemprosesan.

2. Cara melaksanakan pengaturcaraan tak segerak dalam Java

Java menyediakan pelbagai cara untuk melaksanakan pengaturcaraan tak segerak, seperti multi-threading, fungsi panggil balik, Future and CompletableFuture, dsb. . Artikel ini akan menumpukan pada CompletableFuture, kerana ia adalah alat pengaturcaraan tak segerak yang sangat berkuasa ditambah dalam Java 8.

CompletableFuture ialah kelas pelaksanaan khas di Java yang boleh mengendalikan tugas tak segerak dengan sangat mudah. Dalam CompletableFuture, anda boleh menggunakan panggilan berantai untuk menggabungkan berbilang operasi tak segerak untuk membentuk proses pengaturcaraan tak segerak yang elegan dan cekap.

Berikut ialah contoh penggunaan CompletableFuture untuk pengaturcaraan tak segerak:

CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
    // 异步执行任务,返回结果
    return "Hello, CompletableFuture!";
}).thenApplyAsync(result -> {
    // 对任务结果进行处理,返回新的结果
    return result.toUpperCase();
}).whenComplete((result, exception) -> {
    // 完成处理操作
    if (exception != null) {
        // 处理异常情况
        System.out.println("Exception occurred: " + exception.getMessage());
    } else {
        // 处理正常情况
        System.out.println(result);
    }
});

Dalam contoh di atas, yang baharu dibuat menggunakan CompletableFuture.supplyAsync kaedah tugas tak segerak. Hasil tugasan boleh diproses melalui kaedah thenApplyAsync dan kemudian objek CompletableFuture baharu dikembalikan. Akhir sekali, hasil pelaksanaan tugas tak segerak diproses melalui kaedah whenComplete.

CompletableFuture.supplyAsync方法创建了一个新的异步任务。通过thenApplyAsync方法可以对任务结果进行处理,然后返回一个新的CompletableFuture对象。最后,通过whenComplete方法对异步任务的执行结果进行处理。

三、CompletableFuture高级特性的应用

在实际的开发中,CompletableFuture还提供了其他一些高级的特性,如异常处理、超时控制、多任务合并、异步任务等待等。下面以具体的示例来演示这些特性的应用。

异常处理:

CompletableFuture.supplyAsync(() -> {
    throw new RuntimeException("Oops, exception occurred!");
}).exceptionally(ex -> {
    // 处理异常情况
    System.out.println("Exception occurred: " + ex.getMessage());
    return "default value";
});

通过exceptionally方法可以对异步任务中发生的异常进行处理,返回一个默认值或者其他补救措施。

超时控制:

CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
    // 异步执行任务
    return "Hello, CompletableFuture!";
}).orTimeout(1, TimeUnit.SECONDS);

通过orTimeout方法可以控制异步任务的超时时间,如果任务在指定时间内未能完成,则会抛出TimeoutException异常。

多任务合并:

CompletableFuture<String> future1 = CompletableFuture.supplyAsync(() -> "Hello");
CompletableFuture<String> future2 = CompletableFuture.supplyAsync(() -> "CompletableFuture!");
CompletableFuture<String> combinedFuture = future1.thenCombine(future2, (result1, result2) -> {
    // 合并任务结果
    return result1 + ", " + result2;
});

通过thenCombine方法可以将多个异步任务的结果合并起来,形成一个新的CompletableFuture对象,然后对合并后的结果进行处理。

异步任务等待:

CompletableFuture<String> future1 = CompletableFuture.supplyAsync(() -> {
    try {
        Thread.sleep(1000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    return "Hello";
});
CompletableFuture<String> future2 = CompletableFuture.supplyAsync(() -> "CompletableFuture!");

CompletableFuture<Void> allFutures = CompletableFuture.allOf(future1, future2);

try {
    // 等待所有异步任务执行完毕
    allFutures.get();
} catch (InterruptedException | ExecutionException e) {
    e.printStackTrace();
}

通过allOf3 Aplikasi ciri lanjutan CompletableFuture

Dalam pembangunan sebenar, CompletableFuture juga menyediakan beberapa ciri lanjutan lain, seperti pengendalian pengecualian, kawalan tamat masa, penggabungan berbilang tugas, Asynchronous tugas menanti dsb. Yang berikut menggunakan contoh khusus untuk menunjukkan aplikasi ciri ini.

Pengendalian pengecualian:

rrreee

Pengecualian yang berlaku dalam tugas tak segerak boleh dikendalikan melalui kaedah luar biasa dan mengembalikan nilai lalai atau remedi lain.

Kawalan tamat masa: #🎜🎜#rrreee#🎜🎜#Tamat masa tugas tak segerak boleh dikawal melalui kaedah atau Tamat Masa Jika tugasan gagal diselesaikan dalam masa yang ditentukan, ia akan Membuang pengecualian TimeoutException. #🎜🎜##🎜🎜#Penggabungan berbilang tugas: #🎜🎜#rrreee#🎜🎜#Hasil beberapa tugas tak segerak boleh digabungkan melalui kaedah thenCombine untuk membentuk CompletableFuture objek, dan kemudian proses hasil gabungan. #🎜🎜##🎜🎜#Tugas tak segerak menunggu: #🎜🎜#rrreee#🎜🎜#Kaedah allOf boleh membuat urutan semasa menunggu semua tugas tak segerak selesai sebelum meneruskan melaksanakan perkara berikut kod . #🎜🎜##🎜🎜#Kesimpulan: #🎜🎜#Artikel ini memperkenalkan konsep pengaturcaraan tak segerak Java dan penggunaan CompletableFuture. Dengan menggunakan CompletableFuture, kami boleh memudahkan kerumitan pengaturcaraan tak segerak dan meningkatkan prestasi dan kelajuan tindak balas sistem. Pada masa yang sama, CompletableFuture juga menyediakan beberapa ciri lanjutan, seperti pengendalian pengecualian, kawalan tamat masa, penggabungan berbilang tugas, dsb., yang boleh digunakan secara fleksibel mengikut keperluan khusus. #🎜🎜##🎜🎜#Dalam pembangunan sebenar, sebilangan besar operasi IO boleh dioptimumkan melalui pengaturcaraan tak segerak untuk meningkatkan daya pemprosesan sistem. Dengan menggunakan teknologi pengaturcaraan tak segerak secara rasional, kami dapat mengatasi senario konkurensi tinggi dengan lebih baik dan meningkatkan pengalaman pengguna sistem. #🎜🎜##🎜🎜#Jika anda belum menggunakan CompletableFuture lagi, maka saya menggalakkan anda mencubanya, saya percaya anda akan tertarik dengan fungsinya yang berkuasa. Saya harap artikel ini dapat memberikan sedikit bantuan untuk anda memahami dan menggunakan CompletableFuture. Mari kita bekerjasama untuk mencipta aplikasi Java yang lebih cekap! #🎜🎜#

Atas ialah kandungan terperinci Aplikasi cekap teknologi asas Java: Bagaimana untuk melaksanakan pengaturcaraan tak segerak dan CompletableFuture. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn