I assume that you are referring to the terminology in the Oracle documentation for Virtual Threads. This document says this:
The operating system schedules when a platform thread is run. However,
the Java runtime schedules when a virtual thread is run. When the Java
runtime schedules a virtual thread, it assigns or mounts the virtual
thread on a platform thread, then the operating system schedules that
platform thread as usual. This platform thread is called a carrier.
After running some code, the virtual thread can unmount from its
carrier. This usually happens when the virtual thread performs a
blocking I/O operation. After a virtual thread unmounts from its
carrier, the carrier is free, which means that the Java runtime
scheduler can mount a different virtual thread on it.
Further on, the document does use the term "carrier thread" rather than just "carrier".
What the document is saying is that some of the time a virtual thread is assigned to a platform thread. While it is assigned, the platform thread is the carrier (or carrier thread) for the virtual thread.
[...] and somehow these two threads are tied via a carrier thread.
That is not correct. The carrier thread is actually a platform thread. It is just called a carrier thread because its purpose is to "carry" a virtual thread. There are really just two threads here, not three.