Maison > Java > javaDidacticiel > Quelle est l'importance de la méthode Thread.onSpinWait() dans Java 9 ?

Quelle est l'importance de la méthode Thread.onSpinWait() dans Java 9 ?

王林
Libérer: 2023-08-21 09:25:14
avant
1040 Les gens l'ont consulté

La méthode

Java 9中Thread.onSpinWait()方法的重要性是什么?

Thread.onSpinWait() a été introduite dans Java 9. Il s'agit d'une méthode statique de la classe Thread qui peut éventuellement être appelée dans une boucle d'attente occupée. Il permet à la JVM d'émettre des instructions de processeur sur certaines architectures système afin d'améliorer le temps de réponse de ces boucles d'attente de rotation et de réduire la consommation électrique des threads principaux. Il peut améliorer la consommation d'énergie globale des programmes Java et permettre à d'autres threads principaux de s'exécuter plus rapidement dans la même plage de consommation d'énergie. La traduction chinoise de

Syntaxe

<strong>public static void onSpinWait()</strong>
Copier après la connexion

Example

est :

Example

public class ThreadOnSpinWaitTest {
   public static void main(final String args[]) throws InterruptedException {
      final NormalTask task1 = new NormalTask();
      final SpinWaitTask task2 = new SpinWaitTask();
      final Thread thread1 = new Thread(task1);
      thread1.start();
      final Thread thread2 = new Thread(task2);
      thread2.start();
      new Thread(() -> {
         try {
            Thread.sleep(1000);
         } catch(final InterruptedException e) {
            e.printStackTrace();
         } finally {
            task1.start();
            task2.sta*rt();
         }
      }).start();
      thread1.join();
      thread2.join();
   }
   private <strong>abstract </strong>static class Task implements Runnable {
      volatile boolean canStart;
      void start() {
         this.canStart = true;
      }
   }
   private <strong>static </strong>class NormalTask extends Task {
      <strong>@Override</strong>
      public void run() {
         while(!this.canStart) {
         }
         System.out.println("Done!");
      }
   }
   private <strong>static </strong>class SpinWaitTask extends Task {
      <strong>@Override</strong>
      public void run() {
         while(!this.canStart) {
            Thread.<strong>onSpinWait()</strong>;
         }
         System.out.println("Done!");
      }
   }
}
Copier après la connexion

Output

<strong>Done!
Done!</strong>
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal