2014-02-02 3 views
-1

Я неопытен в использовании потоков, и я хотел проверить, насколько хорошо я понимаю их реализацию на Java и других языках программирования.Концепция потока Java

Является ли тот факт, что класс называется нитью, вводящей в заблуждение? Я понимаю потоки как абстрактную концепцию, которая представляет собой набор шагов, выполняемых процессором, имеющим порядок и смысл. Однако объект потока java (а также классы и структуры из других языков программирования) не представляет поток полностью, поскольку он передает управление мониторам и не выполняет весь абстрактный поток. Правильно ли я? Или я неправильно понимаю потоки? (Очевидно, что я прочитал несколько определений на этом пути, включая википедию, но я все еще не уверен)

Кроме того, являются системные процессы ОС (хотя реализованы в C-структурах), похожие на потоки Java?

+0

C имеет потоки, которые работают аналогично Java (запрет на то, что C не использует классы и объекты). – AntonH

ответ

2

Объект Thread представляет поток, поскольку он дает вам ручку, с помощью которой вы можете управлять потоком. Очевидно, что объект является «особенным» в том смысле, что он создает фактически исполняемый поток выполнения, но он представляет этот поток. Метод запуска потока (или выполняемый им вызов) определяет последовательность операций, выполняемых этой нитью, и определяет, как долго будет выполняться поток, и т. Д.

1

Я понимаю потоки как абстрактную концепцию, которая представляет собой набор шагов, выполняемых процессором с порядком и значением.

Это не то, что я вижу. Поток административной структуры, необходимой для выполнения независимого кода. Это могут быть потоки ядра, пользовательские потоки или в этом случае потоки VM. Я не уверен, что вы подразумеваете под «порядком и значением», но поток может выполнять любой код. По словам this page:

Поток является основной единицей использования процессора, состоящий из счетчика команд, стек, и набор регистров,

Хорошее определение (и идентификатор потока). ,

Однако объект потока java (а также классы и структуры, образованные другими языками программирования) не представляет поток полностью, поскольку он передает управление мониторам и не выполняет весь абстрактный поток.

Я не уверен, что понимаю вашу точку зрения. Объект Thread - это способ Java для администрирования независимого объекта. Он управляет фреймом стека, помогает с планированием и администрированием VM и тесно связан с структурами собственных потоков, а также с планировщиком ОС. Что касается Java, то объект Thread, безусловно, является потоком, хотя, быть может, техническим, может быть, вы можете сказать, что это поток после его запуска. Но в любом случае этот термин не вводит в заблуждение - по крайней мере, не для меня.

Это то же самое, что Java File представляет собой файл на диске. Конечно, это не технический файл, а для Java - это класс, который управляет доступом к файлу диска. То же самое с Socket, InputStream, Console и любым другим классом, привязанным к внешнему объекту ОС.

Кроме того, являются системные процессы ОС (хотя реализованы в C-структурах), аналогичные потокам Java?

Э-э, как? Не уверен, что вы подразумеваете под «системным процессом». Может быть, вы говорите о потоках ядра? Несмотря на это, ответ сильно зависит от ОС. Не все OS 'написаны на C, очевидно. Конечно, JVM работает с родной стороной Java и ОС для планирования и управления потоками. После того, как был запущен объект Thread с большинством ОС, существует связь 1 к 1 между классом Java и пользовательским потоком, управляемым ОС.

Смежные вопросы