Warum sleep()
und yield()
Methoden sind definiert als static
Methoden in java.lang.Thread
class
?Java: Warum sind Thread.sleep() und yield() statisch?
Antwort
Der Code würde nur ausgeführt werden, wenn someXThread
ausgeführt wurde, in diesem Fall wäre es sinnlos, someYThread
auszugeben. Also, da der einzige Thread wert yield
auf dem aktuellen Thread ist, machen sie die Methode static
, so dass Sie keine Zeit verschwenden wird versuchen, yield
auf some other thread aufrufen.
Wenn Sie die Methode yield
oder sleep
aufrufen, gilt dies für den aktuellen Thread und nicht für einen bestimmten Thread. Sie müssen nicht angeben, welcher Thread gerade ausgeführt wird, um den Prozessor freizugeben.
Dies liegt daran, wenn Sie diese Methoden aufrufen, diejenigen angewendet werden, auf dem gleichen Thread, der ausgeführt wird. Sie können keinem anderen Thread mitteilen, dass einige Operationen wie sleep()
oder wait
ausgeführt werden sollen. Alle Operationen werden an dem Thread ausgeführt, der gerade ausgeführt wird.
Ich denke, warte ist keine statische Methode, Grund ist warten und benachrichtigen Methoden für die Kommunikation zwischen zwei Threads, während Sleep und Static innerhalb des aktuellen Threads verwendet werden. –
Kein 'wait' ist nicht statisch, ich wollte damit sagen, dass, wenn Sie wait method aufrufen, es den aktuellen Thread stoppt, bis' notify' von einem anderen Thread aufgerufen wird. Sie haben Recht bezüglich der Kommunikation zwischen zwei Threads. –
Sie können aber nur 'wait' auf dem aktuellen Thread aufrufen, wenn Sie die aktuelle Thread-Sperre übernommen haben. 'wait' und' sleep' sind ziemlich verschieden. – selig
Aus demselben Grund sind die Methoden stop() und suspend() veraltet. Ein Eindringen in den Thread-Zustand von außen ist gefährlich und kann zu unvorhersehbaren Ergebnissen führen. Und wenn zum Beispiel der Schlaf nicht statisch ist, wie denkst du, dass es zu einer Unterbrechung kommen wird?
Sowohl Schlaf- als auch Ertragsmethoden sind nativ. Um besser von den obigen Antworten zu verstehen, habe ich zwei Klassen ClassA und ClassB mit derselben statischen Methode gemacht. Ich habe die Methode einer anderen Klasse aufgerufen, um ihr Verhalten zu überprüfen. Wir können also die statische Methode einer anderen Klasse aufrufen.
So kann es andere Gründe dafür geben, Schlafmethode statisch zu machen.
public class ClassA {
public static void method(){
System.out.println("Inside ClassA method");
}
public static void main(String[] args) {
method();
ClassB classb = new ClassB();
classb.method();
}
}
public class ClassB {
public static void method(){
System.out.println("Inside ClassB method");
}
}
Sie sind statisch so dass zwingendes Konzept kann also
vermieden werden, wenn sie mit übergeordneter Klasse Referenz genannt werden Objektkindklasse wie Situation zu halten es implementiert Methode Konzept Ausblenden und nicht aufgrund der statischen Methode Natur zwingender Es wird also die Methode der Elternklasse (hier der Thread-Klasse) ausgeführt, die die volle Funktionalität von Schlaf und Ertrag hat.
- 1. Warum sind Schnittstellen statisch?
- 2. Warum sind Abhängigkeitseigenschaften "statisch"?
- 3. Warum ConcurrentHashMap.Segment und ConcurrentHashMap.HashEntry-Klassen statisch sind?
- 4. Sind Java-Enum-Variablen statisch?
- 5. Python: yield- und Yield-Zuweisung
- 6. Thread.Sleep Alternative in Java
- 7. Warum sollte Java Thread Variablen statisch seine
- 8. Warum sind die Methoden Array.Sort() und Array.IndexOf() statisch?
- 9. Warum Thread.Sleep synchronisiert Threads?
- 10. Sleep, Yield und Join in der Thread-Klasse
- 11. Warum Thread.sleep ist schlecht zu verwenden
- 12. Warum funktioniert Java Thread.sleep oder Date.after() auf anderen Computern anders?
- 13. Java - Statisch definierte Zeichenlisten
- 14. Thread.sleep und neu streichen
- 15. Warum sind die meisten Methoden von System.Array statisch?
- 16. Sind interne Klassen in enums in Java immer statisch?
- 17. In Java sind Enum-Typen innerhalb einer Klasse statisch?
- 18. Warum wird die Klasse in Java als statisch deklariert?
- 19. Sind die using-Deklarationen statisch?
- 20. Warum sind alle Felder in einer Schnittstelle implizit statisch und final?
- 21. Warum ist String.Format statisch?
- 22. Java-Spiel - Nicht malen bis nach Thread.sleep
- 23. Importe in Python sind statisch, jede Lösung?
- 24. Gibt Java Thread.sleep() den Prozessor frei?
- 25. Serialisierung und die Yield-Anweisung
- 26. Verwenden von Futures und Thread.sleep
- 27. Unterschiede zwischen Thread.sleep() und TimeUnit.SECONDS.sleep()
- 28. Thread.sleep() gibt nie zurück
- 29. Warum muss conexpr statisch sein?
- 30. Warum Delegat muss statisch sein?
Sie waren schneller ...;) – Maroun
Andere Gewinde nicht unbedingt nachgegeben werden - wenn es mehr als ein Prozessor (Core) ist, dann können sie aktiv sein. Der wahre Grund ist, dass die Verwendung von Ertrag und Schlaf für andere Threads unvorhersehbar und gefährlich ist und die Privatsphäre anderer Threads verletzt. –
Die Frage ist, warum diese Methode statisch ist? Es geht nicht um den Zugriff auf andere threads.Und ein guter Punkt hier so weit :) –