Does anyone know of a good (preferably free) java profiler that has support for threading? My particular need is something that could present info regarding resource blocking in a multithreaded app. I am experiencing a slowdown when threads are increasing and before making any code changes I would prefer to profile so that only the appropriate code blocks are changed.