Ich habe einen Thread, der nur funktionieren muss, wenn ein bestimmter Umstand eintritt. Ansonsten iteriert er einfach über eine leere Endlosschleife:
%Vor%Beeinflusst es die Performance, wenn die Schleife tatsächlich nichts tut, aber prüfen muss, ob sie die Berechnung bei jeder Iteration durchführen muss? Nur wenn ich einen solchen Thread bei Bedarf erstelle, ist das für mich keine Option, da meine Klasse, die Runnable implementiert, ein visuelles Objekt ist, das immer angezeigt wird.
edit : Ist das folgende eine gute Lösung? Oder ist es besser, eine andere Methode (bezüglich der Leistung) zu verwenden?
%Vor% Sie sollten in Betracht ziehen, den Thread in den Ruhezustand zu versetzen und ihn erst dann zu aktivieren, wenn Ihre "Ball" -Variable wahr wird. Es gibt mehrere Möglichkeiten, dies zu tun, von den sehr niedrigen, wait
- und notify
-Anweisungen bis hin zu den java.util.concurrent
-Klassen, die eine weniger fehleranfällige Vorgehensweise bieten. Sehen Sie sich die Dokumentation für die Bedingung -Schnittstelle an . Eine Datenstruktur wie eine BlockingQueue wäre ebenfalls eine Lösung.
Ja, tut es. Dies ist die einfachste Implementierung von busy waiting und sollte nach Möglichkeit vermieden werden. Verwenden Sie die Methoden wait / notify oder java.util.concurrent
. Vielleicht sollten Sie genauer angeben, was genau Sie erreichen möchten, um nützlichere Antworten zu erhalten.
Tags und Links java multithreading performance infinite-loop