Почему в каждом потоке, работающем в JVM, может быть активен только один метод за раз? - PullRequest
1 голос
/ 27 ноября 2011

Может кто-нибудь объяснить, почему только один метод одновременно может быть активен в каждом потоке, работающем в JVM? Почему не два или три, а только один?

Ответы [ 4 ]

6 голосов
/ 27 ноября 2011

Поток по определению - это то, что выполняет код последовательным способом. Таким образом, нет способа выполнить более одного метода в одном потоке. Если вы хотите выполнять два или более методов параллельно, используйте несколько потоков. Возможно, вы захотите взглянуть на руководство по параллелизму Java , чтобы узнать об основах потоков.

3 голосов
/ 27 ноября 2011

Каждый поток выполняет код синхронно. Потоку дается больше работы после завершения текущего распределения работы.

Относительно того, почему одновременно может быть только один «активный» метод, метод может вызывать другие методы или возвращать. Как только метод вернулся, он, очевидно, больше не активен, аналогично, когда метод вызывает другой, вызываемый метод становится активным.

2 голосов
/ 28 ноября 2011

При наличии нескольких команд за такт, встраивание методов, конвейерная обработка ЦП и переупорядочение команд, один поток может выполнять инструкции из нескольких методов одновременно, однако он должен делать это только тогда, когда вы не видите никакой разницы.т.е. идея в том, чтобы улучшить производительность без изменения поведения.

2 голосов
/ 27 ноября 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...