Estado de RUNNABLE para BLOCKED [Resolvido]

Bom dia pessoa!

Eu estava pesquisando sobre as transições de estado da Thread e achei algo que me deixou em dúvida.
Em alguns lugares dizem que a thread pode ir para BLOCKED por espera de recursos de IO e em outros (como na documentação do Java) dizem que a thread passa de WAITING para BLOCKED quando ela for notificada (somente).

Alguém pode me tirar essa dúvida?

Grato!

Quando a thread aguarda por recurso ela fica em waiting mesmo… só depois de ser atendido o recurso ela volta para a fila para competir pela CPU.
O estado blocked ele é alcançado pelas threads que estão aguardando um recurso sincronizado e que esteja sendo utilizado por outra thread

abraço

Certo, mas a pergunta, resumindo é essa:

Só consigo chegar em BLOCKED assim ?

RUNNABLE -> WAITING -> BLOCKED

ou assim também ?

RUNNABLE -> BLOCKED

A documentação do Java é bem clara. Ela diz o seguinte:
BLOCKED: Ocorre quando uma thread tenta entrar num bloco sincronizado e não consegue. Nesse caso, ela fica bloqueada, aguardando que outra thread saia do bloco. Não houve chamada explícita aos métodos join() ou wait() aqui.
WAITING: Ocorre quando uma thread espera por outra. Seja chamando wait() ou join()

Quando um aplicativo faz I/O, a thread que requisitou entra em Waiting state, pois esperará a thread que faz a leitura do disco em si terminar.

Consegue. E é o caso normal.

A thread tenta entrar num bloco sincronizado, mas ele está em uso. Sai direto de RUNNABLE e fica BLOCKED, até que o bloco libere.

Verdade!

Obrigado pela ajuda!