You don't need a scheduler if you want a start a new repetition as soon as the first one is done, and do it on the same thread. "while (true)" is exactly the way to do this if this is actually what you want.
Your concern about 'hanging the system" indicates that either there is other stuff happening on other threads in the program, which you want to allow to happen, or that you want this sequence to end under some condition which you haven't specified.
In the second case you need to test the termination condition in the while loop instead of "while true" (or use "break"). In the first case you need to make sure other threads get access to the CPU. Calling
Thread.currentThread().yield();
for each iteration is probably the simplest way of making sure that other threads get a chance to execute.