Springbootでのタスクの非同期実行

6389 ワード

パラレルとパラレルシーンでは、非同期実行が少なくありません.ここでspringbootで注釈を使用して非同期タスクを実行する方法を見てみましょう.
まずspringbootプロジェクトを作成し、主関数クラスに@EnableAsync注記を加えて非同期機能をオンにします.以下に示します.
@SpringBootApplication
@EnableAsync
public class SpringbootAcTaskApplication {

	public static void main(String[] args) {
		SpringApplication.run(SpringbootAcTaskApplication.class, args);
	}

}

次にクラスを作成し、@Async注記で非同期メソッドを明記すればよい.以下に示す.
@Component
class AsyncRun {
    @Async
    void async() {
        System.out.println("async running");
    }

    @Async
    Future<String> asyncFuture() {
        System.out.println("async-future running");
        return new AsyncResult<>("async-future run");
    }
}

次に、非同期メソッドを呼び出すテストクラスを示します.
@Component
public class AsyncDemo implements CommandLineRunner {

    @Resource
    private AsyncRun asyncRun;

    @Override
    public void run(String... args) throws Exception {
        System.out.println("begin");
        asyncRun.async();
        Future<String> future = asyncRun.asyncFuture();
        System.out.println("end");
        System.out.println(future.get(1, TimeUnit.SECONDS));
    }
}