Я только начал программировать с использованием Java RMI и столкнулся со следующей проблемой в моем коде:
На моем сервере есть два метода Remote, которые в целом реализованы следующим образом:
public class ServerImpl extends UnicastRemoteObject implements Server{
....
Synchronized void foo(){ aClient.Foo3();}
Synchronized void foo1(){ .... }
}
У моих клиентов есть один удаленный метод, который реализован следующим образом:
public class ClientImpl extends UnicastRemoteObject implements Client{
....
void Foo3(){theServer.foo1();}
}
Поэтому, когда aClient вызывает функцию foo () сервера, сервер вызывает Foo3 () клиента, а затем aClient хочет вызвать функцию foo1 () сервера, и мыиметь тупик (ни сервер, ни клиент не двигаются).Я знаю, что это связано с ключевым словом Synchronized.Проблема в том, что эти методы должны быть синхронизированы (я не хочу, чтобы там было два потока одновременно), и у меня нет ни малейшего представления о том, как решить эту проблему.Любая помощь приветствуется.
Большое спасибо!