I guess Bela's question was about why System. currentTimeMillis() would trigger a context switch, I'm also curious about that one :-)
On its own it doesn't. But if we have a cached clock with a scheduled thread updating that cached value periodically, that happens in an async thread.