Синхронизировать два метода в разных классах (и разных пакетах)
Я столкнулся с проблемой, касающейся синхронизации методов 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 облегчит задачу, но я знаю, что для этого должно быть решение. Заранее спасибо.