[Java]バーチャルスレッドを導入する方法 [SpringBoot]

はじめに

こんにちは、新卒1年目の岡崎です。Java19でプレビュー機能として提供されていたバーチャルスレッドが、Java21で正式機能として提供されました。今回は、このバーチャルスレッドをSpringBootに導入する方法を紹介します。

バーチャルスレッドについて詳しく知りたい人は、公式ドキュメントをご覧ください。

docs.oracle.com

環境

openjdk version "21.0.2" 2024-01-16 LTS
OpenJDK Runtime Environment Corretto-21.0.2.13.1 (build 21.0.2+13-LTS)
OpenJDK 64-Bit Server VM Corretto-21.0.2.13.1 (build 21.0.2+13-LTS, mixed mode, sharing)
  • Spring boot
.   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v3.2.1)

設定方法

application.ymlに以下の実装を行います。

spring:
  threads:
    virtual:
      enabled: true

これだけでバーチャルスレッドを使用することができます。

確認方法

実際にバーチャルスレッドが使用できるかどうかを確認します。

@RestController
@RequiredArgsConstructor
public class TestController {
    @GetMapping("test")
    public String getThread() {
        return Thread.currentThread().toString();
    }
}

結果

VirtualThread[#97,tomcat-handler-0]/runnable@ForkJoinPool-1-worker-1

バーチャルスレッドが使われていたことが確認できました。

最後に

今回は、バーチャルスレッドをSpringBootに導入する方法を紹介しました。皆さんも使ってみてください。

最後に、エキサイトではデザイナー、フロントエンジニア、バックエンドエンジニア、アプリエンジニアを絶賛募集しております!

興味があればぜひぜひ連絡ください!

www.wantedly.com