Synchronizuj dwie metody w różnych klasach (i różnych pakietach)

Mam problem z synchronizacją metod Java. Miejmy nadzieję, że wyjaśnię to krótko:

Mam dwie różne metody w dwóch różnych klasach, w dwóch różnych pakietach. Coś jak:

Package1
     |_Class1
            \MethodA

Package2
     |_Class2
            \MethodB

Ok, więc teraz muszę zsynchronizować te dwie metody, którymi sąnie wątki. Do tej pory mam dwa różne podejścia:

Wspólny semafor.

Utwórz wspólny statyczny semafor na zewnątrzPackage1 iPackage2, coś jak:

 package Package3;

 public class SemaphoreClass {

    public static Semaphore;

}

Tak naprawdę nie wiem, czy JVM uzna to za wspólny semafor.

Zsynchronizowane (SharedClass.class).

Używając współdzielonej klasy do synchronizacji tych dwóch metod, takich jak:

 public void MethodA() {
        synchronized (SharedClass.class) {
           //...
        }

i

public void MethodB() {
        synchronized (SharedClass.class) {
           //...
        }

W każdym razie są to tylko podejścia. Chciałbym usłyszeć, co jest najlepszym sposobem wdrożenia tego, co próbuję osiągnąć. Posiadanie wspólnego semafora dla JVM ułatwiłoby sprawę, ale cóż, wiem, że musi być na to rozwiązanie. Z góry dziękuję.

questionAnswers(1)

yourAnswerToTheQuestion