it-swarm.com.de

Java: Warum sind Thread.sleep () und yield () statisch?

Warum werden sleep()- und yield()-Methoden in Java.lang.Threadstatic als class-Methoden definiert?

27
Rajan Garg

Der Code würde nur ausgeführt, wenn someXThread ausgeführt wird. In diesem Fall wäre es sinnlos, someYThread zur Ausgabe zu bringen. Da der einzige Thread, bei dem es sich lohnt, yield aufzurufen, der aktuelle Thread ist, wird die Methode static erstellt, sodass Sie keine Zeit damit verschwenden, yield für einen anderen Thread aufzurufen.

35
Suresh Atta

Dies liegt daran, dass diese Methoden bei jedem Aufruf auf denselben Thread angewendet werden, der ausgeführt wird. Sie können keinem anderen Thread anweisen, eine Operation wie sleep() oder wait auszuführen. Alle Operationen werden für den Thread ausgeführt, der gerade ausgeführt wird.

14
Prasad Kharkar

Wenn Sie die Methode yield oder sleep aufrufen, gilt dies für den aktuell ausgeführten Thread und nicht für einen bestimmten Thread. Sie müssen nicht angeben, welcher Thread gerade ausgeführt wird, um den Prozessor freizugeben.

ähnlicher Thread in diesem Forum

6
stinepike

Aus demselben Grund sind die Methoden stop () und suspend () veraltet. Das Eindringen von außen in den Thread-Status ist gefährlich und kann zu unvorhersehbaren Ergebnissen führen. Und wenn der Schlaf zum Beispiel nicht statisch ist, wie wird er Ihrer Meinung nach unterbrochen?

2
Mikhail

Sie sind statisch, so dass ein übergeordnetes Konzept vermieden werden kann, d.h.

Wenn sie mit einer übergeordneten Klassenreferenz aufgerufen werden, um eine untergeordnete Klassenobjekt-ähnliche Situation zu halten, implementiert sie das Method Hiding-Konzept und wird aufgrund der statischen Methodennatur nicht überschrieben. Dies ist die Methode der übergeordneten Klasse (hier Thread-Klasse), die die vollständige Funktionalität von sleep und yield aufweist.

http://i.stack.imgur.com/goygW.jpg

2
SWAR0714

Sowohl Schlaf- als auch Ertragsmethoden sind einheimisch. Um die obigen Antworten besser zu verstehen, habe ich zwei Klassen ClassA und ClassB mit derselben statischen Methode erstellt. Ich habe die Methode einer anderen Klasse aufgerufen, um deren Verhalten zu überprüfen. Wir können also die statische Methode einer anderen Klasse aufrufen.
Vielleicht gibt es noch einen anderen Grund dafür, die 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");
    } 

}
0
kartik kudada