Synchronized(Monitor)

temi

Top Contributor
Es geht um das "Objekt mit dem Monitor" bei einem synchronized Block:
Java:
public class Foo
{
    private List<String> list = new ArrayList<>();
   
    //...
   
    public void doSomething(final String s)
    {
        //...
       
        synchronized (this)
        {
            //...
           
            list.add(s);
           
            //...
        }
       
        //...
    }
}

Java:
public class Foo
{
    private List<String> list = new ArrayList<>();
   
    //...
   
    public void doSomething(final String s)
    {
        //...
       
        synchronized (list)
        {
            //...
           
            list.add(s);
           
            //...
        }
       
        //...
    }
}

Was passiert, wenn ich bei synchronized() ein anderes Objekt angebe?

In ersten Fall ist es ja die Klasse, in der die Liste enthalten ist und im zweiten Fall die Liste selbst.

Was ändert sich dadurch am Verhalten?

Sorry für die vielleicht dumme Frage, aber ich habe dazu nichts wirklich erhellendes gefunden.
 

temi

Top Contributor
Ergänzung: Ich habe auch irgendwo gesehen, dass in der Klasse ein zusätzliches privates Attribut angelegt wurde und dieses als Parameter für den synchronized Block verwendet wurde.
 

Enceladus271

Bekanntes Mitglied
Kann man glaube ich am besten an einem Beispiel erklären:
Stell dir vor du hast eine Klasse mit zwei Listen als Instanzvariablen (list1 und list2). Und du hast eine Methode doSomething1 die etwas mit list1 macht und eine weitere Methode doSomething2 die etwas mit list2 macht.
In diesem Fall würde man normalerweise nicht mehr über "this" synchronisieren, sondern doSomething1 über list1 und doSomething2 über list2. Denn wenn ein sich Thread gerade in doSomething1 befindet darf ja ruhig ein anderer Thread doSomething2 betreten. Würde man bei beiden Methoden über "this" synchronisieren würde das nicht mehr gehen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
frager2345 Thread - Methoden synchronized deklarieren Java Basics - Anfänger-Themen 10
berserkerdq2 Wo finde ich in der Java Api die Notation zu Threads bezüglich Synchronized? Java Basics - Anfänger-Themen 14
A Thread - Synchronized Java Basics - Anfänger-Themen 10
berserkerdq2 Findet eine parallele Verarbeitung in Java bei Threads erst statt, wenn man die Methoden auch synchronized? Und wie sieht bei Conditions aus? Java Basics - Anfänger-Themen 8
X Threads Zwei Threads, aber doppelte Ausgabe verhindern (synchronized) Java Basics - Anfänger-Themen 54
O synchronized Java Basics - Anfänger-Themen 39
O synchronized difference Java Basics - Anfänger-Themen 5
E Synchronisierte Methoden vs. Synchronized(lockObject) Block Java Basics - Anfänger-Themen 7
T Was bringt das synchronized bei der Methode? Java Basics - Anfänger-Themen 12
Z Threads Threads - Zugriff auf Ressourcen ohne(Lock, Synchronized) Java Basics - Anfänger-Themen 2
Shams Synchronized-Schlüsselwort bei Inkrementierung einer statischen Variable Java Basics - Anfänger-Themen 13
V Parameter in synchronized-Blöcken verstehen Java Basics - Anfänger-Themen 2
M Threads synchronized und wait Java Basics - Anfänger-Themen 2
N Threads Probleme mit synchronized Java Basics - Anfänger-Themen 9
B synchronized threads Java Basics - Anfänger-Themen 17
J Threads Synchronized Java Basics - Anfänger-Themen 6
U synchronized / lock Java Basics - Anfänger-Themen 8
P Arraylist synchronized? Java Basics - Anfänger-Themen 6
X3TitanCore Methoden synchronized bei einer Methode Java Basics - Anfänger-Themen 2
P synchronized methoden Java Basics - Anfänger-Themen 3
B warum schließt synchronized andere threads nicht aus? Java Basics - Anfänger-Themen 7
M Synchronized klappt nicht Java Basics - Anfänger-Themen 11
E synchronized Methoden Java Basics - Anfänger-Themen 3
M synchronized( ref ) Java Basics - Anfänger-Themen 3
I Synchronized Threads Java Basics - Anfänger-Themen 4
R Problem: Threads Synchronized machen Java Basics - Anfänger-Themen 5
M OOP Synchronized Methoden, zugriff aus Threads Java Basics - Anfänger-Themen 4
X Threads und synchronized - Verständnisproblem Java Basics - Anfänger-Themen 3
M Kleines Problem mit Threads (synchronized) Java Basics - Anfänger-Themen 3
S Fragen zu synchronized + Singleton! Java Basics - Anfänger-Themen 10
S bin zu blöd für threads - wait, notify, synchronized Java Basics - Anfänger-Themen 11
J simple Frage zu synchronized Java Basics - Anfänger-Themen 4
S Threads: synchronized mach nicht was es soll? Java Basics - Anfänger-Themen 6
L Threads und synchronized Java Basics - Anfänger-Themen 8
R wait() in synchronized - Block oder nicht? Java Basics - Anfänger-Themen 4
X Synchronized Zugriff ArrayList<E> Java Basics - Anfänger-Themen 6
G synchronized Java Basics - Anfänger-Themen 5
M synchronized variables? Java Basics - Anfänger-Themen 8
B Verständnissfrage synchronized Java Basics - Anfänger-Themen 2
S Warum wirkt hier synchronized nicht? Java Basics - Anfänger-Themen 9
C Trotz "synchronized" unerwartete Ausgabe Java Basics - Anfänger-Themen 2
E Synchronized - Methoden in verschied. Klassen Java Basics - Anfänger-Themen 3
C synchronized Java Basics - Anfänger-Themen 2
J Fragen zu Synchronized Java Basics - Anfänger-Themen 6
T synchronized HashMap Java Basics - Anfänger-Themen 7
L Problem mit synchronized und String Java Basics - Anfänger-Themen 2
A Problem mit Threads und synchronized Java Basics - Anfänger-Themen 3
B Was bedeutet synchronized? Java Basics - Anfänger-Themen 8
I JFrame / Screen auf zweitem (definiertem) Monitor öffnen Java Basics - Anfänger-Themen 3
B Monitor als Schranke von Threads Java Basics - Anfänger-Themen 20
R Monitor Refresh-Rate Java Basics - Anfänger-Themen 8
I Print Monitor Java Basics - Anfänger-Themen 0
Luk10 Monitor: wait() und notify() Java Basics - Anfänger-Themen 8
J auf ausgabe am monitor reagieren Java Basics - Anfänger-Themen 16

Ähnliche Java Themen

Neue Themen


Oben