Синхронизировать два метода в разных классах (и разных пакетах)

У меня проблема с синхронизацией методов Java. Будем надеяться, что я смогу объяснить это кратко:

У меня есть два разных метода в двух разных классах, в двух разных пакетах. Что-то вроде:

Package1
     |_Class1
            \MethodA

Package2
     |_Class2
            \MethodB

Хорошо, теперь мне нужно синхронизировать эти два метода, которыене темы, Пока у меня есть два разных подхода:

Общий семафор.

Создайте общий статический семафор снаружиPackage1 а такжеPackage2, что-то вроде:

 package Package3;

 public class SemaphoreClass {

    public static Semaphore;

}

Я действительно не знаю, будет ли JVM считать это общим семафором, так или иначе.

Синхронизировано (SharedClass.class).

Использование общего класса для синхронизации этих двух методов, что-то вроде:

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

а также

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

Во всяком случае, это просто подходы. Я хотел бы услышать, как лучше всего реализовать то, чего я пытаюсь достичь. Наличие общего семафора для JVM облегчит задачу, но я знаю, что для этого должно быть решение. Заранее спасибо.

Ответы на вопрос(1)

Ваш ответ на вопрос