synchronized (bitte beantworten, urgent! danke)

Status
Nicht offen für weitere Antworten.

JanHH

Top Contributor
Hallo,

simple Frage: Wenn eine Klasse mehrere synchronized-Funktionen hat, werden dann, wenn ein thread eine davon aufruft, automatisch ALLE synchronized-Funktionen dieses Objekts gesperrt, oder nur die, die aufgerufen wurde? laut core java 2 alle, aber mein programm verhält sich so seltsam.. brauche Klarheit.

Gruß und danke,
Jan
 

The_S

Top Contributor
Also imho (der Logik nach) wird nur die synchronized Methode gesperrt, die auch wirklich momentan unter Verwendung ist.

Schnell genug? ;)
 
S

SlaterB

Gast
alle synchronized-Operationen
und außerdem alle anderen Codestellen der Form

Code:
Code
synchronized (dieses Object) {
   Code
}
Code

@Hobbit: raten ist keine Logik ;)
 

The_S

Top Contributor
SlaterB hat gesagt.:
alle Operationen
und außerdem alle anderen Codestellen der Form

Code:
Code
synchronized (dieses Object) {
   Code
}
Code

? Komplizierter gehts nicht? :p

SlaterB hat gesagt.:
@Hobbit: raten ist keine Logik ;)

Ich schließe mal daraus, dass ich falsch gelegen habe, aber das is trotzdem unlogisch. Warum sollten ALLE Methoden für andere Threads einer Klasse gesperrt werden, nur weil eine synchronized Methode aus einem Thread aufgerufen wurde?
 
S

SlaterB

Gast
habe inzwischen auch schon 'alle synchronized-Operationen' reineditiert ;),

dass maximal die synchronized-Operationen betroffen sind schien ja schon klar,
war nur noch die Frage 'alle von denen oder nur eine',
deshalb schrieb ich verkürzt 'alle Operationen'
 

Ark

Top Contributor
Betroffen sind immer die Objekte, für die die Sperre gilt; bei synchronized-Methoden ist es immer this.
Code:
synchronized(o){
    // Wir sind jetzt hier!
}
Sobald irgendwelche Threads auf o zugreifen wollen, ein anderer Thread aber eine Sperre darum gelegt hat (siehe Skizze), halten diese Threads an. Das kann auch sein, wenn irgendeine andere Klasse auf o zugreifen möchte, z. B. mit o.irgendeineMethode(); dabei ist egal, ob diese Methode nun synchronized ist oder nicht.

So denke ich mir das jedenfalls. ^^ Liege ich richtig? :?:

MfG
Ark
 

The_S

Top Contributor
Erscheint mir tortzdem unlogisch ... *test*

[edit] OK, haste recht @Slater

Aber warum wird das so gemacht? Ist für mich immernoch unlogisch ;) . Erklär mir bitte die Logik dahinter ...
 
S

SlaterB

Gast
> dabei ist egal, ob diese Methode nun synchronized ist oder nicht.

falsch, das ist entscheidend,

> Erklär mir bitte die Logik dahinter ...

im Buch lesen ;)

was soll man da groß sagen?
ein Beispiel ist ein Vector, der ist synchronisiert im Gegensatz zu ArrayList,

wenn da jemand was einfügt und den internen Zustand ändert,
dann ist das Ziel von synchronized für Ordnung zu sorgen,
z.B. auch alle Leseoperationen zu verhindern, die auf einen undefinierten Objektzustand zugreifen würden

alles wird unterbrochen (alles was ebenfalls mit synchronized als gefährdet/ gefährlich gekennzeichnet wurde)

------

man kann auch einzelne/ einige Operationen für sich sperren, dann macht man nicht die Operation synchronized,
sondern verwendet den synchronized-Block mit individuellen Sperr-Objekt
 

Ark

Top Contributor
Hm, dann liege ich wohl falsch. Na ja, ich arbeitete noch nicht in dem Maße mit synchronized, um das so genau wissen zu müssen. ^^

MfG
Ark
 

JanHH

Top Contributor
komplexe Diskussion um eine einfache Frage ;). Danke für die Antworten, bin nun schlauer, hab auch nochmal nachgelesen. Allerdings liegt der Fehler eh woanders :/.

Gruß
Jan
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Synchronized Probleme Allgemeine Java-Themen 7
D ReentrantLock oder Synchronized ? Allgemeine Java-Themen 3
B Threads synchronized Allgemeine Java-Themen 3
OnDemand Threads und synchronized Allgemeine Java-Themen 9
N Best Practice Semi-Synchronized Zugriff Allgemeine Java-Themen 0
E Verständnisfrage zu synchronized-Blöcken Allgemeine Java-Themen 3
J yield() Aufruf in einer synchronized-Methode Allgemeine Java-Themen 13
A Frage zu Synchronized Allgemeine Java-Themen 5
R Synchronized - auf welchem Objekt Allgemeine Java-Themen 16
R synchronized methode rekursiv aufrufen Allgemeine Java-Themen 5
P synchronized Allgemeine Java-Themen 4
S komplexe synchronized bedingungen Allgemeine Java-Themen 6
G synchronized Allgemeine Java-Themen 7
J Threads und synchronized Allgemeine Java-Themen 18
hdi synchronized & volatile Allgemeine Java-Themen 10
G zwei mal synchronized Allgemeine Java-Themen 5
J synchronized block mit this und wait() Allgemeine Java-Themen 5
M Verständnis "synchronized" Allgemeine Java-Themen 4
T Thread synchronized Allgemeine Java-Themen 5
Kr0e Synchronized Allgemeine Java-Themen 4
K synchronized und notify / notifyAll Allgemeine Java-Themen 8
G synchronized-Sclüsselwort: welche Reihenfolge zum Betreten? Allgemeine Java-Themen 6
R synchronized "gegen sich selbst" Allgemeine Java-Themen 5
R ConcurrentModificationException trotz synchronized? Allgemeine Java-Themen 12
R Thread-Problem, und synchronized bringt nix Allgemeine Java-Themen 4
H Ein synchronized Block ausreichend? Allgemeine Java-Themen 6
G synchronized Klasse? Allgemeine Java-Themen 6
G synchronized + threads Allgemeine Java-Themen 12
A deadlocks bei synchronized Allgemeine Java-Themen 3
K vector, synchronized und mehrere methoden Allgemeine Java-Themen 3
Robert Zenz Ich brauche bitte mal kurz einen Sanity/Reality-Check betreffend Tests. Allgemeine Java-Themen 9
jhCDtGVjcZGcfzug Klassen Was genau passiert hier? Kann mir das jemand bitte Zeile für Zeile erklären? Allgemeine Java-Themen 1
B Bitte um Code Erklärung Allgemeine Java-Themen 5
L Einfache Navigations-App schnell selber Programmieren? Bitte um Ideen und Anregungen. Allgemeine Java-Themen 17
J Simple Date Format Alternativen bitte um Code Allgemeine Java-Themen 14
V Bilder bei bestimmten Zeiten wechseln, bitte um Hilfe Allgemeine Java-Themen 5
M Bitte Hilfe mit REGEX (Negieren) Allgemeine Java-Themen 4
I Bitte Drngend hilfe Allgemeine Java-Themen 2
F Socket NullPointerException Bitte um hilfe! Allgemeine Java-Themen 12
M Input/Output Java + OCR ? Erfahrungen und bitte um Hilfe Allgemeine Java-Themen 12
F Bitte um Hilfe! Allgemeine Java-Themen 5
D Code bitte mit 19 stelligen Zahlen kompatibel machen Allgemeine Java-Themen 5
J Probleme bei kompilieren ... Bitte um Hilfe Allgemeine Java-Themen 2
Jats ArrayList-Error Index: 1 Size:1 - Bitte um Hilfe Allgemeine Java-Themen 36
S Bitte um Hilfe Allgemeine Java-Themen 8
N "Bitte warten"-Meldung Allgemeine Java-Themen 6
I Studium - bitte dringend helfen !!! Allgemeine Java-Themen 17
C Eclipse spinnt - bitte Helfen! Allgemeine Java-Themen 3
J Probiert mal bitte aus (Thread + Runtime) Allgemeine Java-Themen 10
L Java6 update N bekommt neues Browser-Plugin, bitte testen. Allgemeine Java-Themen 7
J Bitte um Kurzinfo bez. JMF (ja, war bei Forumssuche/google) Allgemeine Java-Themen 2
E Bitte um Rat: Sortieren mit ArrayList Allgemeine Java-Themen 2
P Bitte um Hilfe Allgemeine Java-Themen 4
K Hab Sch***e gebaut - Bitte um Hilfe Allgemeine Java-Themen 7
G Zertifikat importieren? Bitte HILFE! Allgemeine Java-Themen 2
I Weiß nicht mehr weiter! Bitte helft mir! Allgemeine Java-Themen 5
P Was ist denn Bitte falsch? Allgemeine Java-Themen 2
M Programmierstill: Bitte testen anhand HTML-Tool Allgemeine Java-Themen 18
M Bitte Testen: Mein Multi-File Editor Allgemeine Java-Themen 30
P Bitte kritisieren: rekursive Sortier-Methode Allgemeine Java-Themen 2
J könnt Ihr mir bitte mal den Fehler erläutern! Allgemeine Java-Themen 5
D Große Klasse - was fällt euch so ins Auge? Kritik bitte! Allgemeine Java-Themen 10
thE_29 Vor dem ersten Posten bitte lesen! Allgemeine Java-Themen 0
K bitte um hilfe bei file import Allgemeine Java-Themen 7
N Compiler (javac) funktioniert nicht... Bitte hilfe! Allgemeine Java-Themen 3
molat100 wie kann man die Frage beantworten Allgemeine Java-Themen 1
M Fragen beantworten über Textfeldeingabe Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben