Nouvelles fonctionnalités de Java 21 : threads virtuels

Dans Java 21, des threads virtuels (Virtual Threads) ont été introduits pour simplifier et améliorer la concurrence, ce qui rend la programmation de programmes simultanés en Java plus facile et plus efficace.

Threads virtuels , également appelés « threads en mode utilisateur » ou « fibres ». Cette fonctionnalité est conçue pour simplifier la programmation simultanée et offrir une meilleure évolutivité. Les threads virtuels sont légers, ce qui signifie qu’ils peuvent être créés en plus grand nombre que les threads traditionnels avec beaucoup moins de frais généraux. Cela rend plus pratique l'exécution de tâches ou de requêtes individuelles dans leurs propres threads, même dans des programmes à haut débit.

Créer et utiliser des fils de discussion virtuels

Il existe plusieurs façons de créer et d'utiliser des threads virtuels dans Java 21 :

1. Utilisez des méthodes de création statiques

Thread.startVirtualThreadLa méthode crée un objet exécutable en tant que paramètre et démarre le thread virtuel immédiatement, comme indiqué dans le code suivant :

Runnable runnable = () -> {
    System.out.println("Hello, www.didispace.com");
};

// 使用静态构建器方法
Thread virtualThread = Thread.startVirtualThread(runnable);

Vous pouvez également utiliser Thread.ofVirtual()pour créer, et vous pouvez également définir certaines propriétés ici, telles que le nom du fil. Le code spécifique est le suivant :

Thread.ofVirtual()
        .name("didispace-virtual-thread")
        .start(runnable);

2. ExecutorServiceUtiliser en conjonction avec

À partir de Java 5, il est recommandé aux développeurs d'utiliser des classes ExecutorServicesau lieu de Threadles utiliser directement. Désormais, l'utilisation de threads virtuels a été introduite dans Java 21, il y a donc de nouvelles ExecutorServiceadaptations, jetez un œil à l'exemple suivant :

Runnable runnable = () -> {
    System.out.println("Hello, www.didispace.com");
};

try (ExecutorService executorService = Executors.newVirtualThreadPerTaskExecutor()) {
    for (int i = 0; i < 100; i++) {
        executorService.submit(runnable);
    }
}

Le code ci-dessus crée un thread virtuel dans le bloc try ExecutorServicespour créer un thread virtuel pour chaque tâche soumise.

3. Utilisez l'usine de threads virtuels

Les développeurs peuvent également créer une fabrique qui génère des threads virtuels pour la gestion. Pour plus de détails, consultez l'exemple suivant :

Runnable runnable = () -> {
    System.out.println("Hello, www.didispace.com");
};

ThreadFactory virtualThreadFactory = Thread.ofVirtual()
        .name("didispace", 0)
        .factory();

Thread factoryThread = virtualThreadFactory.newThread(runnable);
factoryThread.start;

Ce code crée une fabrique de threads virtuels. Chaque thread virtuel didispaceaura un nom préfixé et se terminant par un nombre (commençant à 0 et s'accumulant).

résumé

Ci-dessus, nous avons présenté la création et l'utilisation de threads virtuels, et la plupart de nos développeurs Java développent des applications métier spécifiques basées sur Spring, de sorte que la création manuelle peut ne pas être impliquée dans de nombreux scénarios. Par conséquent, il vous suffit d’avoir une compréhension de base du concept de threads virtuels. Faisons donc en fin d’article une synthèse pour faciliter la compréhension et la mémorisation de chacun :

  • Les threads virtuels sont des threads légers gérés par la JVM.
  • Les threads virtuels ne nécessitent aucune allocation ou planification explicite.
  • Les threads virtuels sont idéaux pour les tâches gourmandes en E/S ou les tâches nécessitant beaucoup de parallélisme.
  • Les threads virtuels peuvent également être utilisés pour implémenter des opérations asynchrones.

En outre, il convient de noter que même si les threads virtuels peuvent fournir une aide significative en matière de concurrence et d'évolutivité, ils ne sont pas toujours adaptés à tous les scénarios. Certaines tâches qui nécessitent beaucoup de calculs ne sont pas nécessairement mieux exécutées dans des threads virtuels, car les threads virtuels ont également activé le changement de contexte. Des situations spécifiques nécessitent encore des tests et des évaluations pour trouver la solution optimale.

Et si vous rencontrez des difficultés pendant vos études ? Vous pouvez rejoindre notre groupe d'échange technique de très haute qualité pour participer aux échanges et discussions pour mieux apprendre et progresser ! Aussi, ne partez pas et suivez-moi ! Mettez continuellement à jour la colonne des nouvelles fonctionnalités Java !

Les références

Bienvenue pour suivre mon compte public : Programmeur DD. Soyez le premier à comprendre l'actualité de pointe du secteur, à partager des informations techniques détaillées et à obtenir des ressources d'apprentissage de haute qualité.

Amende de 200 yuans et plus d'un million de yuans confisqués You Yuxi : L'importance des documents chinois de haute qualité La migration massive des serveurs de Musk Le contrôle de la congestion TCP a sauvé Internet Apache OpenOffice est un projet de facto « non maintenu » Google fête son 25e anniversaire Microsoft open source windows-drivers-rs, utilisez Rust pour développer des pilotes Windows Raspberry Pi 5 sera publié fin octobre, au prix de 60 $ Conteneurs macOS : utilisez Docker pour exécuter des images macOS sur macOS IntelliJ IDEA 2023.3 EAP publié
{{o.name}}
{{m.nom}}

おすすめ

転載: my.oschina.net/didispace/blog/10114793