Threads are tricky, and the sync call should run in its own thread in order not to block the main thread.
You just described the way ROS 1 services work. You don’t even need to call them in a separate thread, but ROS 2 sync service calls seem to be much more complicated. Async calls are much easier to work with as @AshK mentioned.
You must have been asked to do this as a sync call in order to learn a bit about how that works, and it’s good you now know how to make it work. Good job!