The actual behavior of the debugger in the case when the breakpoint is hit and suspend policy is set to SUSPEND_EVENT_THREAD is just to print "Breakpoint hit:" in the output without adding any additional information or new line character. After that user needs to set the current thread by entering "thread" command , e.g. "thread 1" and only after that jdb prints the prompt (e.g. "main[1]") . The behavior looks as confusing since it is not obvious for the user that some input is expected from him (e.g. to set the current thread).
=========================
Initializing jdb ...
> stop thread at ThreadObj:4
Deferring breakpoint ThreadObj:4.
It will be set after the class is loaded.
> run
run ThreadObj
Set uncaught java.lang.Throwable
Set deferred uncaught java.lang.Throwable
VM Started: > Set deferred breakpoint ThreadObj:4
Breakpoint hit: thread 1
main[1] eval thread
thread = "Thread[main,5,main]"
main[1]
========================
=========================
Initializing jdb ...
> stop thread at ThreadObj:4
Deferring breakpoint ThreadObj:4.
It will be set after the class is loaded.
> run
run ThreadObj
Set uncaught java.lang.Throwable
Set deferred uncaught java.lang.Throwable
VM Started: > Set deferred breakpoint ThreadObj:4
Breakpoint hit: thread 1
main[1] eval thread
thread = "Thread[main,5,main]"
main[1]
========================