Ich habe das folgende Java-Programm, um zwei Zahlen hinzuzufügen..aber ich habe versucht, durch Threads zu entwickeln, das ist .. Ich sah, dass am Anfang sollte es fünf verschiedene Threads sein benannte T1, T2, T3, T4, T5 und alle fünf Threads sollten die Add-Methode zur gleichen Zeit aufrufen, bitte beraten, wie ich dies erreichen kann, dass alle fünf Threads die Add-Methode zur gleichen Zeit aufrufen, so dass die Leistung könnte verbessert werden ..
kann jemand bitte beraten, wie kann ich dies durch das Executor-Framework oder den contdown-Latch
erreichen %Vor%Alle Ihre Threads können zur gleichen Zeit ohne Konsequenzen aufrufen.
Dies liegt daran, dass innerhalb der Methode die Zahlen- und Zahlenvariablen nur für diese Methode - und auch für den aufrufenden Thread - lokal sind. Wenn Nummer und / oder Nummer global wären, wäre das eine andere Geschichte.
Bearbeiten:
zum Beispiel in diesem Fall:
%Vor%Wenn ein Thread zu Punkt A kommt, hat er zwei Zahlen, die übergeben wurden.
Wenn ein anderer Thread zum Punkt A gelangt, hat er seine eigene Version der Methode mit seinen eigenen unterschiedlichen Zahlen aufgerufen, die übergeben wurden. Das bedeutet, dass sie keine Auswirkung darauf haben, was der erste Thread tut.
Die Zahlen sind nur für die Methode lokal.
in diesem Fall:
%Vor%Wenn ein Thread zu Punkt A gelangt, hat er die Num übergeben und hat die äußere Nummer, weil die äußere Nummer für alle zugänglich ist. Wenn ein anderer Thread in die Methode eintritt, hat er seine eigene Nummer (weil er seine eigene Version der Methode aufgerufen hat), aber er verwendet die gleiche äußere Nummer, da diese Nummer global und für alle zugänglich ist.
In diesem Fall müssen Sie speziellen Code hinzufügen, um sicherzustellen, dass sich Ihre Threads korrekt verhalten.
Sie können das denken Wenn verschiedene Threads die statische Methode von CollectionTest aufrufen, fügen Sie
hinzuwas dann passiert: Zum Beispiel:
%Vor%Tags und Links java multithreading performance