«JAVA нить параллелизм на практике«: структура и инструменты параллелизм Executor

предисловие

Java потоки и параллельность инструменты являются важной частью разработки приложений, много внимания разработчиков, а также имеют некоторые трудности в обучении. «JAVA нить параллелизм на практике» для быстрого обучения и практики руководящих принципов Java 8 параллельных потоков характеристик и инструментов.

«JAVA нить параллелизм на практике» восемь глав, представили класс Thread и Runnable интерфейс , синхронизацию , ожидание и уведомление , группу потоков , рамки таймера , а инструменты разработки , синхронизатор , блокировку раму , а также расширенные средства одновременно аспекты и т.д. тема. В конце каждой главы упражнения таким образом, чтобы читатели помогают закрепить то , что они узнали. Приложение А содержит ответы на все упражнения, Приложение B дает учебник по Swing - нить.

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

Автор 和 Runnable

Java программы выполняются нитью, нить имеет самостоятельный путь выполнения в программе. Когда несколько потоков исполнения, путь между ними могут быть отличными друг от друга. Например, поток может выполнить дело в отрасли заявления переключателя, другой поток может выполнять другие ветви регистра. Каждое приложение имеет реализацию Java в основном () по умолчанию функции основной нити. Приложение может также создавать временные ресурсоемкие задачи в фоновом потоке, для того, чтобы гарантировать, что ответ на пользователь. Эти последовательности выполнения кода пакетов runnable.Java объект потока называется виртуальная машина назначается для каждого потока отдельный стек JVM пространство, чтобы избежать помех друг другу. Отдельные стеки так, чтобы нить может отслеживать свою собственную следующую инструкцию для выполнения, эти инструкции будут отличаться в зависимости от различных потоков. Стек пространство для каждого потока приготовленного отдельно - части параметров методы, локальных переменных, и копирует возвращаемое значение. Java в основном через Java. Lang. Класс Thread и Java. Lang. Runnable интерфейс

Тема и Runnable Профиль

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

Runnable интерфейс для обеспечения выполнения кода нить объект, связанный Thread. Код в методе ничтожной запуска Runnable (), этот метод, хотя нет никаких аргументов и возвращаемых значений, но не может бросить.

1.1 Создание темы и Runnable объектов

В дополнении к основному потоку по умолчанию, поток входит в приложении, создавая соответствующую тему и Runnable объектов. Класс Thread объявляет несколько конструктора для инициализации объекта Thread. Есть несколько методов строительства необходимо получить Runnable объект в качестве параметра. Мы должны создать Runnable объектов двумя способами. Первый способ заключается в создании анонимного орудия класса Runnable интерфейс, как показано ниже:

Runnable ет новый Runnable ()

{

@Override

общественного недействительный запуск ()

// выполнить какую-то работу

Система. вне . Println ( "Привет из нити");

}

};

Перед Java8, это единственный способ создать запускаемым. Однако, Java 8 лямбда-выражения введены более быстро и легко создавать исполняемым: Runnable г = () -> Система из print1n ( «Привет из нити»); лямбда действительно более кратким, чем анонимные классы ... Я буду в последующих разделах этой главы и продолжать использовать эти возможности языка.

1.2 Название получения и установки нити

Каждый из них будет присвоен объект потока имя, это хорошая отладка. Если это имя явно не указано, по умолчанию будет как резьбовая приставка. Вы можете получить это имя при вызове метода Thread Строка GetName (). Чтобы задать имя, имя должно перейти к соответствующей функции конструктора, например, резьбы (Runnable г, имя String) или переноса метода резьбы недействительного SetName (имя String). Следующий фрагмент кода:

Тема t1 = новый резьбы (г, "нить t1"); ,

Система. out.println (t1.getName ()); // Вывод: поток t1

Тема t2 ■ новую тему (г);

t2. SetName ( "нить t2");

Система. out.println (t2 GetName ().); // Вывод: поток t2

1.3 приобретают состояние исполнения нити

Состояние выполнения резьбы государственной Thread константы перечисления определить:

● NEW: состояние резьбы не началось.

● Runnable: следующий поток JVM в этом состоянии.

● БЛОКИРОВКА: состояние нить заблокировала ожидание блокировки монитора (я познакомлю слушателей блокировки в главе 2).

● ОЖИДАНИЕ: а поток ожидает другой поток выполняет операцию специфической в ​​этом состоянии до бесконечности.

● TIMED_ ОЖИДАНИЯ: в этом состоянии в течение конкретного потока ожидает дополнительный период времени, чтобы выполнить операцию нить.

● ОТМЕНЯЛИСЬ: состояние резьбы завершилось.

Thread пути предоставления метода государственного GetState () Thread., Чтобы разрешить приложению определять текущее состояние потока. Примерами являются следующие:

Тема Т = новый поток (г);

Система. вне. Println (t.getState ()); // Вывод: NEW

рамки и инструменты параллелизм Executor

2.1 Введение в параллельных Инструменты

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

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

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

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

●; java.util.concurrent: инструменты часто используют параллельное программирование, такие как: исполнитель.

● Java Util concurrent.atomic: .. Поддержка и безблокировочного потокобезопасные операции на одного инструмента переменной.

● java.util одновременно замки: .. В определенных условиях (такие объекты будут приостановлены, «ждать», пока поток не будит другой поток, на этот раз некоторые из булева состояния объекта может стать реальностью), чтобы получить блокировку и ждать исполнения инструменты. Для этих типов замков, чем ожидания для оператора или с помощью Java на основе синхронизации и дождитесь, пробуждения механизма слушателя, имеющего более высокую производительность и масштабируемость. Эта структура также будет longnanoTime () метод вводит класс java.1ang.System, который позволяет делать, если вы можете измерить относительное время наносекундного времени доступа к ресурсам. Одновременные инструменты могут быть классифицированы как исполнитель, синхронизатор (синхронизатор) и рамка замка. Я исследую исполнитель в следующих разделах и обсудить оставшиеся категории в следующих разделах.

Из - за ограниченности пространства показывает только небольшие серии содержимого частичных каталогов Добро пожаловать , чтобы присоединиться к сообществу обмена для всех , чтобы  нажать на   доступный текстовый документ

 

 Threading API

Глава первая: Thread и Runnable
 

 

 Глава II: Синхронизация

 Глава третья: Wait и уведомлять

 Глава 4: дополнительные возможности распараллеливания

Одновременные инструменты

Глава V: Одновременные Инструменты Eecutor Яо кадр

 Глава 7: Блокировка рамы

 

Опубликовано 66 оригинальных статей · вона похвала 48 · просмотров 20000 +

рекомендация

отblog.csdn.net/kxkxyzyz/article/details/104228174