В настоящее время я изучаю, как работает Java RMI, но я не понимаю определенного аспекта.
В нераспределенной многострочной среде, если методы одного и того же объекта вызываются одновременно из разных потоков, каждый из них будет выполняться в стеке соответствующего потока (доступ к общим данным не является частью моего вопроса).
В распределенной системе, так как клиентский процесс вызывает методы на заглушке, а фактический вызов выполняется в стеке процесса, который создал удаленный объект, как одновременные вызовы обрабатываемого метода? Другими словами, что происходит при разрешении сказать серверный поток, когда есть два (или более) запроса для выполнения того же метода в этом потоке?
Я подумал об этом вопросе, так как хочу сравнить это с тем, к чему я привык, - казни на разных стеках.Параллельный доступ к удаленному объекту Java RMI
ответ
Как следует обращаться к методу одновременного вызова?
Не указано. В документе RMI specification тщательно указано: «Время выполнения RMI не дает никаких гарантий относительно сопоставления вызовов удаленных объектов в потоки».
Оккультный смысл этого заключается в том, что вы не можете считать сервер однопоточным.
Другими словами, что происходит при разрешении сказать серверный поток, когда есть два (или более) запроса для выполнения того же метода в этом потоке?
Невозможно выполнить два или более запросов для выполнения метода в том же потоке. Вопрос не имеет смысла. Вы поместили уникальный «let say server thread», который фактически не существует.
Однако может быть два или более запросов на выполнение метода, возникающих из двух или более одновременных клиентов, или двух или более одновременных потоков в одном клиенте или обоих, и из-за формулировки спецификации RMI вы можете " t возьмем на сервере однопоточную деспфинговую модель.
В реализации Oracle/Sun это действительно многопоточность, а также реализация IBM. Я не знаю о какой-либо реализации RMI, которая не является многопоточной, и любая такая реализация будет в основном бесполезной.
Благодарим вас за хорошее объяснение. – PetarMI
- 1. доступ к удаленному объекту
- 2. Как получить доступ к удаленному объекту
- 3. Не удается получить доступ к удаленному объекту
- 4. Не удается получить доступ к удаленному объекту
- 5. Доступ к удаленному объекту в Appengine NDB
- 6. RMI не может подключиться к удаленному серверу
- 7. Подключение к объекту RMI без регистрации
- 8. Доступ к удаленному GarbageCollectorMXBean
- 9. Параллельный доступ для чтения к объекту Thread, который эмулирует карту
- 10. обнаружить параллельный доступ к синхронной функции java
- 11. Параллельный доступ к методу службы сервлетов Java
- 12. Доступ к Java RMI от .NET
- 13. Java RMI и удаленный доступ к файлам
- 14. Параллельный доступ к unmodifiableMap
- 15. Параллельный доступ к спискам
- 16. C# не может получить доступ к удаленному объекту
- 17. Не удается получить доступ к удаленному объекту MVC4 View
- 18. не может получить доступ к удаленному объекту Datacontext asp.net 5
- 19. «Не удается получить доступ к удаленному объекту» в блоке catch
- 20. SSH.NET «Не удается получить доступ к удаленному объекту»
- 21. LINQ to SQL «исключить доступ к удаленному объекту» исключение
- 22. Ошибка в foreach Не удается получить доступ к удаленному объекту
- 23. Sitecore 7 Поиск, невозможно получить доступ к удаленному объекту
- 24. Не удается получить доступ к удаленному объекту - Новое решение
- 25. C# Winforms - не удается получить доступ к удаленному объекту
- 26. ObjectDisposedException - Не удается получить доступ к удаленному объекту
- 27. Не удается получить доступ к удаленному объекту в System.Net.Sockets.TcpClient
- 28. Не удается получить доступ к удаленному объекту - wcf client
- 29. Не удается получить доступ к удаленному объекту .NET
- 30. Невозможно получить доступ к удаленному объекту с именем «ParkingWindow»
Сервер RMI использует пул потоков для обработки входящих «вызовов». Согласно этому учебнику http://www.comp.lancs.ac.uk/~weerasin/csc253/tutorials/week7.html нет соответствия между потоками в клиентском процессе и потоками на сервере (т. Е. Запросы от того же клиентский поток может выполняться в разных потоках сервера, а запросы из разных потоков одного и того же клиентского процесса могут выполняться в одном и том же потоке сервера.) Запросы от разных клиентских процессов, предположительно, всегда выполняются в разных потоках сервера. –
@jameslarge В реализации Sun/Oracle нет пула потоков. Ссылка, которую вы цитируете, не является нормативной ссылкой. – EJP