2016-05-15 2 views
2

Angenommen, ich habe zwei Klassen A und BKann der Thread-Zugriff auf 'A' gesperrt werden, während ein Thread 'B' ausführt?

public class A 
{ 
    public synchronized void doSomethingA 
    { 
     //Do stuff 
    } 
} 

public class B 
{ 
    public synchronized void doSomethingB 
    { 
     //Do other stuff 
    } 
} 

Und ich habe zwei Threads gemeinsam laufen, lassen Sie uns sie x und y nennen.

Da die Methoden synchronisiert sind, ist es für y nicht möglich, auf dosomethingA zuzugreifen, während x dort ist, aber es kann auf doSomethingA zugreifen, während x doSomethingB tut.

Gibt es eine Möglichkeit y daran zu hindern, etwas zu tun, während x in doSomethingA oder in doSomethinB ist?

+0

Beachten Sie, dass Sie ein Objekt und keine Methode oder einen Thread sperren. Wenn Sie den Zugriff auf ein gesperrtes Objekt sperren möchten, rufen Sie zuerst die Sperre auf. –

Antwort

0

viele Möglichkeiten. Der direkteste Weg wäre die Verwendung eines `.

Es bietet die gleiche Funktionalität wie synchronized, aber Sie sind verantwortlich die Verriegelung selbst für die Verwaltung. Sie müssen eins zwischen den Klassen freigeben, damit beide Methoden es zum Sperren verwenden können.

+0

Danke! das hat geholfen! –

+0

Ich versuche, keine Zeit damit zu verbringen, nicht hilfreiche Antworten zu geben. – Kayaman

Verwandte Themen