Es geht um das "Objekt mit dem Monitor" bei einem synchronized Block:
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.
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.