Sincronizar dos métodos en diferentes clases (y diferentes paquetes)

Me enfrento a un problema relacionado con la sincronización del método Java. Esperemos poder explicarlo brevemente:

Tengo dos métodos diferentes en dos clases diferentes, en dos paquetes diferentes. Algo como:

Package1
     |_Class1
            \MethodA

Package2
     |_Class2
            \MethodB

Ok, ahora necesito sincronizar estos dos métodos, que sonno hilos. Hasta ahora, tengo dos enfoques diferentes:

Semáforo compartido.

Crear un semáforo estático compartido fueraPackage1 yPackage2, algo como:

 package Package3;

 public class SemaphoreClass {

    public static Semaphore;

}

Realmente no sé si JVM consideraría esto como un semáforo compartido, de todos modos.

Sincronizado (SharedClass.class).

Usando una clase compartida para sincronizar esos dos métodos, algo como:

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

y

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

De todos modos, estos son solo enfoques. Me gustaría saber cuál es la mejor manera de implementar lo que estoy tratando de lograr. Tener un semáforo compartido para JVM facilitaría las cosas, pero bueno, sé que debe haber una solución para esto. Gracias por adelantado.

Respuestas a la pregunta(1)

Su respuesta a la pregunta