Рубрики
Без рубрики

Понимание многопоточности

Многопоточность – это функция, используемая для обработки параллельных запросов с целью максимальной эффективности. … С пометкой “информатика”, “программирование”, “java”.

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

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

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

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

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

Ресурсы:

  1. Ресурсы:

  2. Ресурсы:

  3. https://docs.oracle.com/cd/E19455-01/806-3461/6jck06gqj/index.html#:~:text=Threads%20impose%20minimal%20impact%20on,server%2Dclass%20and%20multimedia% 20 приложений .

  4. https://docs.oracle.com/cd/E19455-01/806-3461/6jck06gqj/index.html#:~:text=Threads%20impose%20minimal%20impact%20on,server%2Dclass%20and%20multimedia% 20 приложений

Оригинал: “https://dev.to/jryther/understanding-threading-5c9o”