If you are using synchronized you shouldn't need to explicitly call wait() or notify() it's built in. The answer of how you call them in order is you can't. At least not with synchronized, its up to the OS thread scheduler to decide what runs next.
However there are many ways to achieve ordering. You could submit Callables / Runnables to an ExecutorService which will call them in order. You can chain actions with CompletableFuture's. There are many other types of locks other than synchronized in java.util.conurrent. ReentrantLock, Semaphore, CyclicBarrier, CountdownLatch.
If you give a more specific use case we might be able to give you a better solution.