HardExperience level: 8-15 years1 min read

Diagnosing a Hang from a Production Thread Dump

Reviewed by Gurusankar M. · Updated Aug 24, 2026

Asked inAmazonMicrosoftDeloitteGoogle
#thread dump#jstack#contention#diagnosis#production
Report issue

Short Answer

Capture 2–3 dumps a few seconds apart (jstack/jcmd). Look for: a deadlock section, clusters of BLOCKED threads (find the lock owner), many threads stuck in the same stack frame (slow dependency), and threads that don't move between dumps (hung). Correlate with CPU to separate busy from blocked.

On this page

Concept Made Simple

Coffee Chat Question

“How do you diagnose high latency or a hang from a production thread dump?”

Remember It Faster

Mind Map Answer

Deadlock
JVM prints it explicitly
BLOCKED cluster
lock contention → find owner
Same frame x many
slow downstream call
No movement
hung thread

Learn by Doing

Hands-on Keyboard

bash
jcmd <pid> Thread.print > dump1.txt    # repeat x3, ~5s apart
# or
jstack -l <pid> > dump1.txt
# analyze in fastThread.io / look for BLOCKED + lock owners

Think Beyond the Expected

What If?

Threads are RUNNABLE in a socketRead but latency is high — bug in your app?

Not necessarily your CPU — a thread blocked in native socketRead shows as RUNNABLE. Many threads parked there means a slow/unresponsive downstream (DB, API). The fix is timeouts, connection-pool tuning, and circuit breakers, not app threading.

Real World

Thread dumps are the #1 tool for 'the app is slow/hung' incidents: they reveal deadlocks, lock contention hotspots, and threads piled up waiting on a slow database or API — often pointing outside your code.

Interviewer's Expectation

Keywords they're listening for:

  • multiple dumps over time
  • deadlock section
  • BLOCKED → lock owner
  • socketRead shows RUNNABLE
  • correlate with CPU

Common Mistakes

  • Taking a single dump (no movement comparison)
  • Assuming RUNNABLE means CPU-bound
  • Not capturing CPU usage alongside

Best Practices

  • Take 2–3 timed dumps + a CPU sample
  • Trace BLOCKED threads to the lock owner
  • Add timeouts/circuit breakers for slow dependencies

Follow-up Questions

  1. Why take several dumps instead of one?
  2. How do you find the thread holding a contended lock?
  3. What does a thread parked in socketRead tell you?

Continue Learning with AI

Take this question deeper with your favourite AI assistant. Pick a depth, copy the prompt, or open it directly — AI is your learning companion, not a shortcut.

Plain-language foundations

I'm preparing for a software engineering interview and want to understand this from scratch, as a beginner.

Topic: Deadlocks (Multithreading)
Interview question: "How do you diagnose high latency or a hang from a production thread dump?"

Please:
1. Explain the core idea in simple, plain language, using an everyday analogy.
2. Define any technical terms you use.
3. Walk through one small, concrete example.
4. Finish with a single sentence I can easily remember.

Keep the tone friendly and assume I'm new to this topic.
Open inChatGPTGeminiClaude

Was this answer helpful?

Affiliate links

Equipment for a comfortable, productive setup.

As an Amazon Associate I earn from qualifying purchases.