Разница между состояниями потоков

В java поток может быть остановлен двумя способами: пользователем (вызовом сна или ожидания) или синхронизированным блоком. Поток перестает работать или блокируется (ожидая снятия блокировки каким-либо другим потоком), когда он пытается войти в синхронизированный блок (если какой-либо другой поток получил такую ​​же блокировку).

Поэтому я хотел знать, есть ли разница в состояниях потоков (под состоянием я имею в виду переменные потока, контекст и т. Д.), Заблокированных синхронизированным блоком и пользовательскими методами, такими как сон в java.


person me_digvijay    schedule 20.11.2012    source источник
comment
Что ты пытаешься сделать? Если есть значимая разница, зависит от этого.   -  person Thilo    schedule 20.11.2012
comment
stackoverflow.com/questions/1036754/   -  person Robert Peters    schedule 20.11.2012
comment
@Thilo: На самом деле я читал эту статью ibm.com/developerworks /java/tutorials/j-threads/section5.html и подумал, что спящий поток может быть повторно вызван прерыванием или завершением времени ожидания. Поэтому мне было просто любопытно, есть ли разница в этих подходах или они одинаковы внутри.   -  person me_digvijay    schedule 20.11.2012
comment
Итак, вопрос в том, можно ли прервать поток, который блокируется на мониторе (ключевое слово synchronized)?   -  person Thilo    schedule 20.11.2012
comment
@Thilo: На самом деле вопрос, который вы предложили, тоже приходил мне в голову, но я думаю, что он может ограничить некоторую информацию. Я имею в виду, что если я знаю состояние потока, я могу использовать эту информацию вместо того, чтобы просто прерывать его.   -  person me_digvijay    schedule 20.11.2012


Ответы (1)


- Когда поток выполняет IO операции или выполняет sychronized блок, его нельзя прервать.

- Когда thread пытается получить доступ к synchronized блоку объекта, key которого уже занят каким-то другим потоком, этот поток, пытающийся получить доступ к синхронизированному блоку, войдет в block состояние.

person Kumar Vivek Mitra    schedule 20.11.2012