La méthode
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
<strong>public static void onSpinWait()</strong>
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!"); } } }
<strong>Done! Done!</strong>
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!