Instanz-Variablen in Java-Spring-Bean

Entwickle ich eine Java Spring MVC Projekt und ich zögere, die Instanz-variable in Java-Spring-Bean.Ich möchte bitten, einige Fragen zu diesem Thema.

Habe ich eine Instanz-variable in meinem Java-Spring-Bean und sein Typ ist String.

private String abc = "hell";

Wie wir wissen , Java-Spring Standard-Umfang ist ein Singleton, und Sie sind konstruiert, bei der die Start-Zeit des Projekts. .Es ist eine einzige Instanz, und meine Instanz-variable muss thread-sicher.

Habe ich diese variable "abc" in die Methoden der Bohnen und, wenn Sie erreicht sind, die von mehreren threads wird es beschädigt die Konsistenz der Daten in jedem thread?

Für ein Beispiel Thread 1 erreichen die Bohne und nehmen Sie die abc-variable geändert, es als "Hallo".Auf, die Zeit , Thread 1 Verweis auf abc variable Punkt "Hölle" oder "Hallo"? Ich bin verwirrt bei diesem Thema.

Ich die Zeichenfolge abc variable ThreadLocal Objekt zu sorgen, dass jeder thread besitzt eigenen abc-variable.Aber ich habe gelesen, dass mit ThreadLocal Objekte tritt ein Speicher-Leck in der Tomcat.Nach der 7.0-version von Tomcat es wird gesagt, dass es behoben wird.

Weil jeder thread besitzt eigene variable, und wenn Ihre Aufgabe beendet ist, kehren Sie die thread-pool, der vom container verwaltet wird.Aber,Rücksendung der pool , ThreadLocal-Objekt wird nicht zerstört, und Sie verursachen Speicherlecks.

Darüber hinaus String-Objekt unveränderlich ist, so in theorical Sicht muss es dazu führen, dass die multi-Threading-problem ??

ist jeder thread besitzt Ihre String-variable auf seinen eigenen? Zum Beispiel, Gewinde-1-Trigger und starten Sie dann die Methode invocation , und erstellen Sie separate String-variable "abc" und Thread 2 auslöst dann wird der neue String-variable "abc" und tun Sie Schaden "abc" variable jedes andere?

Ich Frage mich wirklich, dieses Konzept der Nutzung und begierig zu lernen die Antworten.

InformationsquelleAutor | 2013-08-04
Schreibe einen Kommentar