public class Main {
//コールバックインターフェース
interface AsyncFunctionCallback {
// 成功したら isSucceed に true を渡すようにする
void onAsyncFunctionFinished(boolean isSucceed);
}
@SuppressWarnings("exports")
public final AsyncFunctionCallback callback = null;
public static void main(String[]args){
// 非同期処理終了時に呼びたい Callback
AsyncFunctionCallback
callback = new AsyncFunctionCallback() {
// 無名クラスでコールバックオブジェクトの定義
@Override
public void onAsyncFunctionFinished(boolean
isSucceed) {
System.out.println("Async function finished.");
~~~
}
};
asyncFunction(callback); // 非同期処理実行
System.out.println("非同期処理実行中...");
}
private static void asyncFunction(AsyncFunctionCallback callback) {
// 新しいスレッドを生成して非同期処理をする
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("別スレッドで非同期処理開始");
try {
Thread.sleep(1000); // 1秒処理を止める
// 処理が終わったらコールバックを呼び出す
callback.onAsyncFunctionFinished(true);
} catch (InterruptedException e) {
// 処理が失敗したらコールバックに false を渡す
callback.onAsyncFunctionFinished(false);
}
}
});
thread.setDaemon(false);
thread.start();
}
}