Yes, while(true) is valid, do(;;) is not. Were you meaning for(;;)?
while(true) { } and for(;;) { } will accomplish the same thing.
If you meant while(true) { }
versus do { } while(true);
Then there is still a difference. The first is a top-driven loop while the second is a bottom-driven loop. The bottom-driven loop is guaranteed to execute the loop body at least one time.
while(true) evaluates a runtime constant over and over, where as for(;;) doesn't, but I don't know if that makes a difference. In fact, even that possible minute difference will probably be optimized out by the compiler.
It's a matter of style, while(true) { } looks a little cleaner than for(;;) { } in my humblest of opinions. Verbosity in code usually lends a hand to third parties trying to understand it.