Noch in der Phase des Lernens OOP Konzepte in Java. Im Nebenläufigkeit Beispiel in Orakel Tutorial here ((bitte ertragen mit mir und habe es kurz, es ist einfach)), producerconsumerexample
Klasse löst die beiden Threads producer
und consumer
, die beide Daten über die Drop
Objekt drop
austauschen sollten. Und in diesem Objekt sollen sie gegenseitig auf sich warten lassen.Concurrency Grundlagen - Data-Sharing-Objekt
public class ProducerConsumerExample {
public static void main(String[] args) {
Drop drop = new Drop();
(new Thread(new Producer(drop))).start();
(new Thread(new Consumer(drop))).start();
}
}
Was ich nicht verstehe, ist, dass das drop
Objekt zu jedem Thread von der Klasse producerconsumerexample
übergeben wird, das uns zwei neue lokale Drop
Objekte gibt, auch drop
, einen in jedem der beiden Fäden genannt. Dies ist meines Wissens nach darauf zurückzuführen, dass die Weitergabe in Java nach Wert und nicht nach Referenz erfolgt. Somit hat jeder Thread nun seine eigene Version des Drop
Objekts, also wie kommt es, dass sie immer noch Daten über das gleiche ursprüngliche Drop
Objekt teilen sollen, da jeder Thread seine eigene Version hat?!
Jemand bitte helfen, ich würde wirklich wirklich wirklich es zu schätzen wissen.
https://stackoverflow.com/questions/40480/is-java-pass-by-reference-or-pass-by-value – Mat
Objekte als Referenz übergeben werden. –
@Alexei und nach Wert für Primitive? –