Ваш вопрос довольно расплывчатый и широкий, поэтому, естественно, мой ответ расплывчатый и широкий.
Потоки существуют в одном и том же процессе, работают на одной и той же JVM и совместно используют память и ресурсы.Они могут делиться доступом к ресурсам. Это поможет вам начать работу.
Поскольку вы заинтересованы в передаче файла, я предполагаю, что вы хотите перенести этот файл между процессами в логически распределенном приложении (которое являетсяразделить на виртуальные машины Java, которые могут работать или не работать на одной физической машине).В этом случае сокеты были бы более полезными для вас.
Сокеты - это низкоуровневый способ решения этой проблемы. Этот поможет вам начать работу с сокетами.
Существуют и другие альтернативы сокетам, такие как Java RMI , Веб-службы Java EE , CORBA и Java Messaging Service , но то, насколько они уместны, зависит от того, чего вы в конечном итоге пытаетесь достичь.
Для чего-то простого сокеты, вероятно,будьте адекватны, но будьте готовы к тому, что подход на основе сокетов станет хитрее при попытке выполнить более сложную функциональность