2014-10-05 12 views
1

Просматривая большинство учебников по java, они упоминают потоки как легкий процесс. Я знаю, что происходит в создании потоков, но я не получил определение потока. В stackoverflow большую часть времени также ответил на этот вопрос. Но это тоже я сбиваю с толку. Не удалось получить реальную идею «Легкий вес». Может ли кто-нибудь объяснить простейший способ, что означает «поток - это легкий процесс»?Почему потоки называются легкими процессами?

+0

@PaRiMaLRaJ Я видел это. Но это не дает мне четкой идеи. Не может ли поток больше веса? Не может ли поток выполнить много процессов? Множество задач для достижения среднего массового процесса или нет? Этот ответ не разрешил мою проблему. – Maduri

ответ

0

Вы можете назвать это так, потому что поток, как процесс, является способом параллельного, concurrrent-потока выполнения. Но вопреки процессу поток использует одну и ту же память, чем другие потоки в одном процессе, вместо того, чтобы иметь полностью отдельную память.

+0

Хорошо, дорогая. Доля памяти означает, что я думаю, что другой поток также может получить доступ к этой памяти. Но почему мы говорим «Легкий вес»? Не может ли нить иметь высокий/большой вес? Не может ли поток выполнять очень тяжелый процесс? – Maduri

+4

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

+0

@ThomasStets Я думаю, что вы решаете мою проблему в некоторой степени. Thanx много дорогой. «создание потока или переключение между потоками». Это означает, что легкий вес не означает, что количество задач, которые должен выполнить поток. Я правильно? Легкий вес означает нагрузку между переключением или исполнением? Другая проблема заключается в том, что в этой теме есть много задач, а затем выполнение, как стать эффективным/легким? – Maduri

1

Я думаю, что объяснение возрастает из-за того, что потоки, генерируемые родительским процессом, используют одно и то же адресное пространство в памяти. С другой стороны, каждый процесс имеет собственное адресное пространство. Исходя из этого факта, контекстный переключатель для процесса намного тяжелее, чем контекстный переключатель для потока.

1

Процесс имеет разные зоны памяти. В зависимости от операционной системы, некоторые из них могут быть сгруппированы, не существует, или даже суб-расщепленные:

  • код
  • памяти (для переменных)
  • стек
  • кучи (для динамического распределения)

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