Can you explain what makes it so terrible? At first glance it seems as if it is thread safe, and avoiding synchronization locks can provide a nice speed up.
The notion that currentPos could be set to the new Point before the Point(int x, int y) constructor completed was completely surprising to me.
Is that something that was obvious to you, or do you have other reasons to dislike it?