Threads synchronisierung des Zugriffes auf daten

flodo

Mitglied
Hallo folgende Frage

Ich habe ne ArrayList die wird an verschiedene Klassen in meinem Package übergeben.Per Referenz, also jeder greift darauf zu mittels getter und setter

schafft synchronized auch zwischen den Klassen den Zugriff zu synchronisieren?

zb. so

Java:
class A{

public synchronized void x(ArrayList t){


t.setbla("fjladsf");
t.getbla();
}


}

Class B{

public synchronized void y(Arraylist t){

t.setbla("djklsfjlsdjf");
t.getbla();

}

}

funktioniert so ein Konstrukt oder muss ich mir da was anderes einfallen lassen? und wenn ja was??

danke 🙂
 
Ich würde nur die getter und setter synchronisieren und dir das dort sparen, da die getter und setter in mehreren threads verwendet werden und nicht das. es könnte immer noch in der getter/setter methode gewechselt werden. (hier bin ich mir nicht so sicher)

synchronisiere lieber die methoden, die in unterschiedlichen threads verwendet werden und nicht die methoden, die intern diese aufrufen.
 
Das synchronized bringt nur etwas, wenn an den fraglichen Stellen auf dasSELBE Objekt synchronized wird. Und das wäre hier schonmal nicht der Fall. Wenn du genauer beschreibst, was du vorhast, und was dort wo wann von welchem Thread aus passieren soll, kann man vielleicht genaueres sagen. Vielleicht reicht es schon, das "ArrayList" durch ein List<Type> zu ersetzen (was man sowieso immer machen sollte!) und dann dort eine Collections.synchronizedList(originalList) zu verwenden, aber auch das befreit einen nicht davon, sicherzustellen, dass sich die Threads nicht gegenseitig in die Quere kommen.
 
Denke immer daran, dass es sowas, wie ConcurrentLinkedQueue, LinkedTransferQueue, ConcurrentHashMap etc gibt, diese lösen weitesgehend synchronisierte Collections ab. "Synchronized" ist der Holzhammer für jeden Multicore... Auch wenn es vermutlcih auf deinen Fall null Einfluss hat, es ist gut sowas frühzeitig zu lernen und anzuwenden.. Vlt als kleines Sinnbild: Stell dir mal 4 Arbeiter vor, die immer alles mit ihrem Chef absprechen müssten, also wirklcih jeden kleinsten Arbeitsschritt... Das hat nichts mit parallel-Verarbeitung zu tun 😉
 
Zuletzt bearbeitet:

Zurück
Oben