Как известно, потоки Java могут взаимодействовать с использованием некоторых API-интерфейсов потоков. Но я хочу знать, как потоки Java и потоки ОС обмениваются друг с другом. Например, поток Java должен ждать, пока какой-то поток ОС завершит его выполнение и вернет некоторые результаты в этот поток Java, и он обрабатывает то же самое.Связь между потоком Java и потоками ОС
ответ
Многие смешивают потоки и процессы здесь, jvm - это процесс, который может порождать больше потоков. Темы - более легкие процессы, которые обмениваются памятью в рамках своего процесса. Процесс, с другой стороны, живет в его собственном адресном пространстве, что делает переключение контекста более дорогостоящим. Вы можете общаться между различными процессами с помощью механизмов IPC, предоставляемых вашей ОС, и вы можете общаться между различными потоками в рамках одного процесса из-за разделяемой памяти и других методов. То, что вы не можете есть общаться с ThreadA (ProcessA) до ThreadA (ProcessB) без прохождения через обычный старый IPC: ThreadA(ProcessA) -> ProcessA -> IPC(OS) -> ProcessB -> ThreadA(ProcessB)).
Вы можете использовать RMI для связи между двумя процессами Java, если вы хотите, чтобы «говорить» родной ОС, вы должны пойти JNI, чтобы вызывать механизмы IPC, выбранные вашей ОС по выбору.
Вы можете исправить меня здесь :)
Sidenote: Вы не можете видеть нити вашей виртуальной машины Java с менеджером процесса (до тех пор, как ваша JVM не отображает потоков для родных процессов, которые бы глупо но возможно), вам нужно использовать jps и jstack для этого.
Потоки Java обычно, но не обязательно запускаются в собственных потоках, а классы параллелизма Java могут, но необязательно отображаться на родные эквиваленты.
Если вам нужно было синхронизировать собственный поток с потоком Java, вам, скорее всего, придется подумать о написании метода JNI, который вызывает ваш поток Java. Этот JNI-метод будет выполнять любую собственную операцию синхронизации, которую он должен выполнить, а затем вернуться. Каждая платформа будет делать это по-другому, но я предполагаю, что это не будет слишком большой проблемой, если вам нужно сначала изучить собственные потоки.
- 1. Отличие между потоками Java и потоками ОС?
- 2. Связь между потоками java
- 3. Связь между рабочими потоками
- 4. Task.Factory и связь между потоками
- 5. связь между потоками в java
- 6. Связь между потоками в Java
- 7. Связь между основным потоком и рабочими потоками в android
- 8. связь между потоками
- 9. Связь между несколькими потоками
- 10. Какова связь между потоками TYPO3 и TYPO3?
- 11. iPhone Простая связь между потоками
- 12. Какая связь между потоком java и системной нитью
- 13. C# Связь между потоками
- 14. Потоковая связь между потоками
- 15. Связь между потоками
- 16. Qt блокирующие потоки и связь между потоками
- 17. потоковая связь между потоками
- 18. Связь между двумя потоками
- 19. Связь Между двумя потоками
- 20. Связь между потоками в Qt
- 21. Связь между потоками между производителями и потребителями
- 22. Связь между потоками в Java без блокировки
- 23. Java: Разница между потоками и потоком ввода-вывода объясняется
- 24. Связь между лимитом стека и потоками
- 25. Как облегчить связь между потоком сервера и потоками нескольких клиентов в Java
- 26. Связь с потоком
- 27. lua lanes связь между потоками
- 28. Связь между потоками без IPC
- 29. Связь между потоками в PySide
- 30. Какова наилучшая связь между потоками?
Темы - это темы. Не смешивайте нити и ** Легкие процессы **: http://en.wikipedia.org/wiki/Light-weight_process – Jonas
@ Jonas yep, я не хотел вводить LWP здесь. Изменены «легкие» к «более легким» процессам, что по крайней мере менее ошибочно;) – atamanroman