Starting threads are very costly.
Both Java and Scala offers APIs to create thread pools. Instead of spawning threads yourself, you should use CompletionStage (java) or a Future (scala).
I see you are using Scala, so maybe the best is to get familiar with Futures and ExecutionContext in Scala first.
Once you get a good understanding of how you should use them, you should look at how to use Futures inside Actors. Here is a good place to start: Interaction Patterns • Akka Documentation
But first make sure you get familiar with Futures in Scala.