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

Я столкнулся с проблемой, касающейся синхронизации методов 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)

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