5k would be fine, 50k would not, with current hardware and JVM, based on my experience. The pain point again in my experience, is not any of the issues cited in that presentation, but rather that GC gets bound up in a wad eventually when you have large (>10k) numbers of threads in a JVM (and any reasonably complex application). This is because the object graph becomes highly interconnected through the Thread and associated TLS objects. YMMV of course. Definitely agree that the "async is fast" myth needs debunking, though.