synchronisation zwischen threads
-
hi,
wie kann man in java eine variable die in beiden threads benutzt wird synchronisieren? macht man es oft wie im folgenden code gezeigt? kann hierbei etwas unerwartetes passieren?
class foo { public int var = 1; public Object lock1 = new Object(); private void set_var() { synchronized (lock1) { var1 = 0; } } } class mythread { public foo foo_reference; private void set_var() { synchronized (foo_reference.lock1) { foo_reference.var1 = 2; } } }
cu
-
Merke: Public Attributes are evil.
Wenn du schon eine set_var() hast, wieso benutzt du die Methode nicht?class foo { private int var = 1; synchronized public void set_var(int var) { this.var = var; } } class mythread { private foo foo_reference; private void set_var() { foo_reference.set_var(10); } }
Btw, eine synchronized Methode ist das gleiche wie:
public void set_var(int var) { synchronized (this) { this.var = var; } }