Bedeutung Synchronized:
Man kann mit Synchronize einen speziellen Bereich bzw. spezielle Methode sperren.
Dies gilt aber immer nur für ein Objekt??? Mehrere Objekte können die selbe Synchronized Methode gleichzeitig aufrufen?
Wenn ein Thread in einer Synchronized Methode ist kann kein anderer Thread diese Methode betreten.
Unterschied join / synchronized
synchronized sperrt nur einen Bereich, die anderen Threads laufen aber weiter.
Wenn ich jedoch threadname.join() mache, dann werden alle anderen Threads angehalten, egal wo sie sind bis der Threadname mit der join() Methode fertig ist.
wait / notify
ruft ein Thread die methode wait() auf, geht er in einen wartezustand bis ein anderer Thread die Methode notify() aufruft.
Hier muss man sicherstellen, dass sich nicht beide Threads gleichzeitig in der wait() Methode befinden, dies kann man zusätzlich durch synchronize machen.
yield()
threadnamel.yield()
Hier is der Thread so liebevoll und gibt die vergebene CPU-Zeit einem anderen Thread und reiht sich wieder in die Warteschlange hinten ein.
Habe mir etwas über Threads durchgelesen und es so verstanden.
Ist das korrekt?
Man kann mit Synchronize einen speziellen Bereich bzw. spezielle Methode sperren.
Dies gilt aber immer nur für ein Objekt??? Mehrere Objekte können die selbe Synchronized Methode gleichzeitig aufrufen?
Wenn ein Thread in einer Synchronized Methode ist kann kein anderer Thread diese Methode betreten.
Unterschied join / synchronized
synchronized sperrt nur einen Bereich, die anderen Threads laufen aber weiter.
Wenn ich jedoch threadname.join() mache, dann werden alle anderen Threads angehalten, egal wo sie sind bis der Threadname mit der join() Methode fertig ist.
wait / notify
ruft ein Thread die methode wait() auf, geht er in einen wartezustand bis ein anderer Thread die Methode notify() aufruft.
Hier muss man sicherstellen, dass sich nicht beide Threads gleichzeitig in der wait() Methode befinden, dies kann man zusätzlich durch synchronize machen.
yield()
threadnamel.yield()
Hier is der Thread so liebevoll und gibt die vergebene CPU-Zeit einem anderen Thread und reiht sich wieder in die Warteschlange hinten ein.
Habe mir etwas über Threads durchgelesen und es so verstanden.
Ist das korrekt?