Библиотека knigago >> Компьютеры: Языки и системы программирования >> Java, Java Script >> Многопоточное программирование в Java


СЛУЧАЙНЫЙ КОММЕНТАРИЙ

# 2129, книга: Щит судьбы
автор: Эрик Флинт

Эрик Флинт, мастер исторической и альтернативной исторической фантастики, представляет "Щит судьбы", захватывающий роман, который перенесет читателей в эпический мир, полный магии, меча и героических подвигов. "Щит судьбы" следует за историей Ксавьера де Жори, молодого дворянина, который оказывается втянут в древнюю борьбу между силами света и тьмы. Когда его мир вторгается орда безжалостных захватчиков, Ксавьер должен объединить свои силы с группой разношерстных воинов,...

Тимур Сергеевич Машнин - Многопоточное программирование в Java

Многопоточное программирование в Java
Книга - Многопоточное программирование в Java.  Тимур Сергеевич Машнин  - прочитать полностью в библиотеке КнигаГо
Название:
Многопоточное программирование в Java
Тимур Сергеевич Машнин

Жанр:

Java, Java Script, Параллельное и распределенное программирование

Изадано в серии:

неизвестно

Издательство:

неизвестно

Год издания:

-

ISBN:

9785005314642

Отзывы:

Комментировать

Рейтинг:

Поделись книгой с друзьями!

Помощь сайту: донат на оплату сервера

Краткое содержание книги "Многопоточное программирование в Java"

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

Читаем онлайн "Многопоточное программирование в Java" (ознакомительный отрывок). [Страница - 2]

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

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

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

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

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

Java поддерживает IPC с помощью сокетов, библиотек RMI и CORBA.

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

Приложение Java может создавать дополнительные процессы с помощью объекта ProcessBuilder.

Потоки существуют в процессе — каждый процесс имеет хотя бы один поток.

Потоки используют общие ресурсы процесса, включая память и открытые файлы.

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

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

Каждый поток имеет свой собственный кеш памяти.

Если поток читает общие данные, он сохраняет эти данные в своем собственном кеше памяти.

Несколько потоков создаются в приложении для обеспечения параллельной или скорее независимой обработки или асинхронного поведения.

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

При этом ускорение программы с помощью многопоточных вычислений на нескольких процессорах ограничено размером последовательной части программы. Это так называемый закон Амдала.

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

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

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

Проблема видимости возникает, если поток A читает общие данные, которые позже изменяются потоком B, а поток A не знает об этом изменении.

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

Проблема видимости и доступа может привести к сбою в работе — программа перестанет реагировать и войдет в ступор или взаимную блокировку из-за одновременного доступа к данным, или может быть сбой безопасности — программа создаст неверные данные.

Как решаются эти проблемы мы обсудим позже.

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

Но с точки зрения программиста, вы начинаете с одного потока, называемого основным потоком.

Этот поток имеет возможность создавать дополнительные потоки.

Вопрос в том, как мы можем создать, запустить и выполнить поток?

В Java каждый поток представлен экземпляром класса Thread.

Создать поток, или экземпляр Thread, можно двумя способами.


Книгаго: Многопоточное программирование в Java. Иллюстрация № 6
Первый способ, это сначала создать объект Runnable.


Книгаго: Многопоточное программирование в Java. Иллюстрация № 7
Интерфейс Runnable определяет один метод run, предназначенный для того, чтобы содержать код, выполняемый в потоке.

После создания, объект Runnable передается конструктору класса Thread.

И поток запускается методом start.

Второй способ, это создать подкласс класса Thread.

Сам класс Thread реализует интерфейс Runnable, и при этом его метод run пустой.

Поэтому нужно создать подкласс класса Thread и предоставить собственную --">
стр.

Оставить комментарий:


Ваш e-mail является приватным и не будет опубликован в комментарии.

Книги схожие с «Многопоточное программирование в Java» по жанру, серии, автору или названию:

Java 7. Ильдар Шаукатович Хабибуллин
- Java 7

Жанр: Java, Java Script

Год издания: 2012

Серия: В подлиннике

Программирование на JavaScript в примерах и задачах. Алексей Николаевич Васильев
- Программирование на JavaScript в примерах и задачах

Жанр: Java, Java Script

Год издания: 2017

Серия: Российский компьютерный бестселлер