Many mix threads and processes here, jvm is a process that can spawn more threads. Topics are lighter processes that exchange memory as part of their process. A process, on the other hand, lives in its own address space, which makes context switching more expensive. You can communicate between different processes using the IPC mechanisms provided by your OS, and you can communicate between different threads within the same process due to shared memory and other methods. What you cannot do is related to ThreadA (ProcessA) with ThreadA (ProcessB) without going through the normal old IPC:ThreadA(ProcessA) -> ProcessA -> IPC(OS) -> ProcessB -> ThreadA(ProcessB)).
You can use RMI to communicate between two java processes, if you want to "talk" with OS-based processes, you must go JNI to invoke the IPC mechanisms your OS chooses.
:)
Sidenote:
JVM ( JVM , , ), jps jstack .