7
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Springの@Asyncが便利すぎて鼻血でた

Last updated at Posted at 2018-01-30

バタバタしているので後で見返せるようにザクッとメモ

ポイント

  • デフォルトでは@Asyncによる非同期処理が機能しないので@EnableAsyncをつける
  • @Service内のメソッドやクラス単位で@Asyncを付与。これだけでその部分を非同期処理にすることができる。
  • ExecutorをリターンするgetAsyncExecutorメソッドをオーバーライドすることで設定が書ける
@Async // コメントアウトすると、メインスレッドで実行されるようになります。非同期処理はなされなくなりますが、コンパイルエラーにはなりません。
    public Future<User> findUser(String user) throws InterruptedException {
        logger.info("Looking up " + user);
        String url = String.format("https://api.github.com/users/%s", user);
        User results = restTemplate.getForObject(url, User.class);

        // 非同期処理を並列実行することによって、処理時間が短縮されることを分かりやすくするための sleep です。
        Thread.sleep(1000L);
        return new AsyncResult<>(results);
    }

関係ないけど参考記事のこの部分を見て、未だ利用したことのないRestTemplateに俄然興味を持った。
機会があればいじってみたい。ストックとして面白そうな記事を載せておく。

参考記事

Spring Boot における非同期処理
Springの@Asyncで非同期処理をする
Springbootで非同期処理はとっても簡単
Javaの並列化コードサンプル集(MPSDやMPMDの並列化あたりはThread、Runnableの参考にできる)
さあ、並列プログラミングをはじめよう(ExecutorはThreadの上位互換っぽい)
非同期処理にはThreadを直接使わずにExecutorServiceを使用する

ストック

SpringのRestTemplateが便利すぎて鼻血でた

7
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?