您好,登錄后才能下訂單哦!
在Java中,泛型類是一種具有類型參數的類。泛型類型參數化允許我們在類定義時指定一個或多個類型參數,這些參數可以在類的方法和屬性中使用。異步編程是一種編程模式,它允許程序在等待某些操作完成時繼續執行其他任務。在Java中,我們可以使用Future
、CompletableFuture
等類來實現異步編程。
下面是一個使用泛型類和異步編程的示例:
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
// 定義一個泛型類,其中T是類型參數
public class AsyncTask<T> {
private CompletableFuture<T> future;
// 構造函數,接受一個Callable任務
public AsyncTask(Callable<T> task) {
this.future = CompletableFuture.supplyAsync(task);
}
// 獲取任務的結果
public T getResult() throws ExecutionException, InterruptedException {
return future.get();
}
// 取消任務
public void cancel(boolean mayInterruptIfRunning) {
future.cancel(mayInterruptIfRunning);
}
}
// 定義一個Callable接口
interface Callable<T> {
T call() throws Exception;
}
public class Main {
public static void main(String[] args) {
// 創建一個AsyncTask實例,用于執行異步任務
AsyncTask<String> asyncTask = new AsyncTask<>(new Callable<String>() {
@Override
public String call() throws Exception {
// 模擬一個耗時的操作,如IO操作
Thread.sleep(2000);
return "異步任務的結果";
}
});
// 啟動異步任務
asyncTask.future.thenAccept(result -> {
System.out.println("異步任務完成,結果是: " + result);
});
// 在主線程中執行其他任務
System.out.println("主線程繼續執行其他任務...");
try {
// 獲取異步任務的結果
String result = asyncTask.getResult();
System.out.println("異步任務的結果: " + result);
} catch (ExecutionException | InterruptedException e) {
e.printStackTrace();
}
}
}
在這個示例中,我們定義了一個泛型類AsyncTask
,它接受一個Callable
類型的任務作為參數。CompletableFuture
類用于執行異步任務,并通過thenAccept
方法處理任務完成后的結果。在main
方法中,我們創建了一個AsyncTask
實例,用于執行一個耗時的異步任務,并在主線程中繼續執行其他任務。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。