Многопоточное программирование в Java

Многопоточное программирование в Java

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

Жанр: Книги о компьютерах
Цикл: Не является частью цикла
Год публикации: Неизвестен

Читать онлайн Многопоточное программирование в Java


© Тимур Машнин, 2021


ISBN 978-5-0053-1464-2

Создано в интеллектуальной издательской системе Ridero

Процессы и потоки


Чтобы начать работу с основами многопоточного программирования, давайте начнем с изучения потоков.

Каждая операционная система поддерживает потоки в той или иной форме.



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

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

Принцип увеличения производительности процессора за счёт нескольких ядер, заключается в разделении выполнения потоков или различных задач на несколько ядер.

На самом деле, можно сказать, что практически каждый процесс, запущенный у вас в системе, имеет несколько потоков.

Операционная система может виртуально создать для себя множество потоков и выполнять их все как бы одновременно, даже если физически процессор и одноядерный.

Например, Windows – это многозадачная операционная система, то есть она может одновременно выполнять две и более программ или процессов.

И Windows – это также и многопоточная операционная система.

Это означает, что в действительности программы состоят из ряда более простых потоков выполнения.

Выполнение этих потоков планируется так же, как и выполнение процессов.

Если процессор одноядерный, и так как несколько потока выполняются у нас одновременно, то нужно создать для пользователя, эту самую одновременность выполнения.

Операционная система, делает это хитро, за счет переключения между выполнением этих потоков (эти переключения мгновенны и время идет в миллисекундах).

То есть, система некоторое время выполняет один поток, затем резко переключается на выполнение другого потока, и так далее по кругу.

Таким образом, создается впечатление одновременного выполнения нескольких задач.

Но при этом теряется производительность.

Если процессор многоядерный, тогда переключения может не потребоваться.

Система будет посылать каждый поток на отдельное ядро.

Несколько потоков могут выполняться одновременно, каждый на своем ядре.

Но тут есть проблема.

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

Это означает, что программа, или процесс, должна быть максимально распараллелена в коде по отдельным задачам.

Если у вас есть многоядерный процессор, и у нас есть два ядра или два процессора P0 и P1, у вас будет возможность создать единицы выполнения, называемые потоками, T1, T2, T3.



И операционная система сама позаботится о планировании этих потоков на процессорах по мере их доступности.

Таким образом вы получаете многопоточное выполнение.

Платформа Java обеспечивает поддержку многопоточности с помощью пакета java.util.concurrent.

В многопоточном программировании существуют две основные единицы исполнения – это процессы и потоки.



И многопоточное программирование на Java в основном касается потоков.

Чем отличается поток от процесса?

Процесс имеет автономную среду исполнения.



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

Процессы часто ассоциируются с приложением.

Однако то, что пользователь видит, как одно приложение, может быть на самом деле набором взаимодействующих процессов.

Для облегчения взаимодействия между процессами большинство операционных систем поддерживают Inter Process Communication (IPC).

IPC используется не только для связи между процессами в одной и той же системе, но и процессов в разных системах.


Вам будет интересно
Bootstrap представляет собой свободный фреймворк интерфейсов для быстрой и простой Web разработки. Bootstrap предоставляет шаблоны дизайна, основанные на HTML и CSS для разметки, форм, кнопок, таблиц, навигации, диалоговых окон, каруселей изображений и многого другого, а также дополнительные плагины JavaScript. На основе Bootstrap можно легко создавать сайты с «отзывчивым дизайном», одинаково хорошо выглядящие на всех типах устройств, от небольших телефонов до настольных компьютеров....
Читать онлайн
Дополненная реальность (Augmented Reality) не является какой-то новой технологией, но ее применение было замечено широкой публикой с появлением игры Pokemon GO, которая показала, что технология AR имеет большой потенциал. В книге рассмотрены различные способы разработки приложений с дополненной реальностью, от нативной разработки в Android Studio до использования таких движков, как Unity....
Читать онлайн
Облачные и распределенные вычислительные системы – это быстро развивающаяся IT-область хранения и обработки данных.Современные облачные и распределенные вычислительные системы строятся на основе общих концепций и алгоритмов, таких как облако, MapReduce, NoSQL базы данных, распределенные алгоритмы, масштабируемость и многое другое.Познакомьтесь с этими фундаментальными понятиями облачных и распределенных информационных систем и узнайте, как эти системы работают изнутри....
Читать онлайн
Книга содержит 30 тестов по 50 вопросов с ответами на знание Android. Книга предназначена для подготовки к экзаменам и собеседованиям....
Читать онлайн
Эта книга предназначена для тех, кто хочет научиться программировать на языке Java.С этой книгой вы обучитесь объектно-ориентированному программированию на платформе Java SE и научитесь применять принципы ООП на практике.Эта книга охватывает важные аспекты программирования на языке Java, начиная с основ и заканчивая объектно-ориентированным подходом и командной разработкой кода....
Читать онлайн
Эта книга для тех, кто уже знаком с языком программирования Java и хотел бы научиться разрабатывать настольные приложения Java с графическим интерфейсом пользователя.С этой книгой Вы познакомитесь с такими Java библиотеками графического интерфейса пользователя, как AWT, Swing, SWT/JFace и JavaFX....
Читать онлайн
Индустрия видеоигр в Финляндии стремительно развивается: ее обороты растут год от года, а в Хельсинки работает больше 50 студий, успешно конкурируя с международными корпорациями.Финские геймдизайнеры создали мрачные вселенные Max Payne и Alan Wake, гоночную серию Trials и фримиум-стратегию Boom Beach. Angry Birds стала самой скачиваемой игрой для мобильных устройств в истории и сделала своего создателя миллиардером.В этой книге журналист Конста Клеметти и игровой продюсер Харро Грёнберг расшифро...
Читать онлайн
Приведены результаты макетирования схем оптоэлектронных переключателей, устройств на их основе, в маломощных режимах (значение токов СД оптронов на порядок меньше номинальных), что открывает возможность использовать дискретные оптроны СД-ФР, СД-ФТр. и СД-ФД. Перспективным оказались оптроны типа СД – p-i-n ФД (с ВЧ n-p-n транзистором). На макетах схем ОЛУ (кольцевой «ГИ», «R-S» триггер, др.) при модуляции СД в составе маломощных схем ОЛЭ nИЛИ-НЕ получены частоты переключения до 0,1…0,25МГц....
Читать онлайн
Это первая книга из серии «7 ключей, чтобы открыть бизнес». В серии идёт речь об основных этапах, которые нужно пройти предпринимателю, начинающему своё первое дело.Книга «Найди свои алмазные залежи» о поиске и создании идей для бизнеса. Наличие хорошей идеи – вот что является движущей силой для любого бизнеса. В книге раскрываются методы поиска и техники генерации свежих идей. Рассказывается, в чём ценность идеи и что сделать, чтобы идеи стали действительно сокровищем для обладателя....
Читать онлайн
Программы для компьютера, как душа для человека – без них он номинально функционирует, но не живёт.Это инструменты. Как ими пользоваться решать Вам....
Читать онлайн
Копирайтинг и написание студенческих работ в настоящее время пользуются большим спросом. Люди, которые решили посвятить себя данным видам деятельности, хорошо зарабатывают. Эта книга будет полезна широкому кругу читателей: пенсионерам, студентам, мамочкам в декрете… Всем тем, кто хочет научиться зарабатывать через интернет, кто хочет стать автором студенческих работ....
Читать онлайн
Вторая часть книги про Web 3.0: на этот раз основа повествования – экономика, а точнее – её преломления через токены, и всё, что с этим связано (DeFi, ICO, IEO, перенос реального сектора в онлайн мир с помощью p2p и прочее)....
Читать онлайн
Ведение блога может стать хорошим источником дохода, если действовать по плану. Его можно разработать, прочитав книгу. В ней содержатся советы, раскрыты небольшие секреты и перечислены примеры....
Читать онлайн
Книга третья [2020 – 2021 г.]Цель книги «Цифровая экосистема Института омбудсмена: концепция, технологии, практика» заключается в том, чтобы познакомить читателя с новыми тенденциями формирования нового цифрового общества и цифровой экономики, а также с перспективами применения новых технологий четвертой промышленной революции не только в цифровом государственном управлении, но и в Институте омбудсмена в Российской Федерации.Все, что написано в этой книге – это уникальный опыт....
Читать онлайн
Данный календарь Луны позволит оптимально спланировать собственные дела, ориентируясь на влияние Луны и её актуальные аспекты к планетам, без использования компьютерных программ....
Читать онлайн
Научно-фантастический детектив, где преступление произошло одновременно в двух реальностях, причем в одной из реальностей действие происходит в современном мире, а в другой реальности – в середине 19-го века, но обе эти реальности связаны одним событием, одним преступлением и одной разгадкой....
Читать онлайн
Эта книга посвящена людям, не только опередившим время, но и сумевшим своими достижениями в науке или общественной мысли оказать влияние на жизнь и мировоззрение целых поколений. Невозможно рассказать обо всех тех, благодаря кому радикально изменился мир (или наше представление о нем), речь пойдет о десяти гениальных ученых и философах, заставивших цивилизацию развиваться по новому, порой неожиданному пути. Их имена – Декарт, Дарвин, Маркс, Ницше, Фрейд, Циолковский, Морган, Склодовская-Кюри, Ви...
Читать онлайн
Профессия политика, как и сама политика, существует с незапамятных времен и исчезнет только вместе с человечеством. Потому люди, избравшие ее делом своей жизни и влиявшие на ход истории, неизменно вызывают интерес. Они исповедовали в своей деятельности разные принципы: «отец лжи» и «ходячая коллекция всех пороков» Шарль Талейран и «пример достойной жизни» Бенджамин Франклин; виртуоз политической игры кардинал Ришелье и «величайший англичанин своего времени» Уинстон Черчилль, безжалостный диктато...
Читать онлайн