Библиотека параллельного исполнения программ на Java — это библиотека, в которой среда исполнения Java разделяет поток программ на несколько подпотоков.
Общие сведения о многопоточности
На сегодняшний день программы по развитию и внедрению суперкомпьютерных технологий в промышленную сферу являются самыми приоритетными. Составной обязательной частью программы развития суперкомпьютеров может считаться создание необходимого программного обеспечения, которое может потребовать практических знаний параллельного и распределенного программирования. Для того чтобы программа могла выиграть от увеличения вычислительных мощностей, ее следует формировать в виде совокупности параллельно исполняемых задач.
Параллельными вычислениями является методика организации компьютерных вычислений, при которой программы должны разрабатываться в виде совокупности взаимодействующих вычислительных процессов, осуществляемых в параллельном режиме, то есть, одновременно. Реализация параллельного программирования превратилась в последнее время в жизненную необходимость, продиктованную темпами развития многоядерных процессоров.
Наличие многопоточности способно обеспечить возможность параллельного исполнения нескольких типов операций в одной прикладной программе. Параллельные вычисления могут быть реализованы на уровне потоков, и программа, сформированная в форме нескольких потоков в рамках одного процесса, может выполняться быстрее за счет параллельного исполнения ее отдельных фрагментов.
Многопоточность является ключевой моделью параллелизма, которая поддерживается современным компьютерным оборудованием, языками программирования и операционными системами. Многопоточностью является свойство платформы, такой как, операционная система, виртуальная машина и так далее, или приложения, которое состоит в том, что процесс, зародившийся в операционной системе, может иметь в своем составе несколько потоков, исполняющихся «параллельно». Подобное подразделение позволяет реализовать более эффективное использование ресурсов вычислительной техники.
Разработка библиотеки параллельного исполнения программ на Java.
Язык программирования Java может считаться первым массово используемым языком программирования, который в явной форме имеет в своем составе потоки, а не предлагает рассматривать их в качестве функции расположенной ниже операционной системы. Как раз в Java в первый раз многопоточность реализовали разработчики на уровне конструкций языка и базовых библиотек.
Сегодня Java является одним из самых распространенных языков программирования, при помощи которого могут работать миллиарды устройств. Язык программирования Java объединил возможности объектно-ориентируемых и параллельных языков, а также выступает в качестве идеального инструмента, использующего разные сетевые технологии. Язык Java способен поддерживать как многопоточное, так и распределенное программирование, то есть, в случае исполнения программы на разных компьютерах, которые связаны по сети.
Целью многопоточного программирования может считаться эффективная организация программы при помощи взаимодействия отдельных элементов. Понятие процесса выступает как одно из базовых теории и практике многопоточного программирования. Процессом является исполняющийся экземпляр программы. Причем в таком формате процессы часто именуют тяжеловесными процессами.
Программа может быть сформирована из одного процесса, однако она может иметь в своем составе и несколько процессов. К примеру, браузер Chrome формирует отдельные процессы для каждой вкладки. Процессы являются изолированными друг от друга, по этой причине прямой доступ к памяти другого процесса является невозможным, а взаимодействие среди процессов реализуется при помощи специальных средств.
Каждый процесс обладает собственным адресным пространством, памятью и стеком данных, а также может применять иные вспомогательные данные, для того чтобы контролировать его выполнение. Операционная система реализует управление исполнением всех процессов в системе, путем выделения всем процессам процессорного времени по заданному принципу. Операционная система должна также отвечать за то, как виртуальное пространство процесса будет проецироваться на физическую память. В ходе исполнения процесса могут выполняться ветвления или запуск новых процессов для решения других задач, однако любой новый процесс обладает собственной памятью, стеком данных и так далее. Некоторые процессы не способны обладать доступом к общей информации, когда не запущено между процессное взаимодействие (interprocess communication) в том или ином формате.
Потоки, которые иногда называются легковесными процессами, являются подобными процессам, исключая тот факт, что все они исполняются в границах одного и того же процесса, то есть, должны использовать один и тот же контекст. Все потоки, которые организованы в одном процессе, могут использовать общее пространство данных с главным потоком, по этой причине они могут вести обмен информацией или взаимодействовать друг с другом с наименьшими сложностями в сравнении с отдельными процессами.
Потоки обычно исполняются параллельно. Как раз распараллеливание и совместное использование данных могут стать предпосылками, которые способны обеспечить координацию исполнения нескольких задач. Одноядерный процессор способен выполнять обработку команд только в последовательном режиме, то есть, по одной команде за раз (в самом простом случае). Но запуск нескольких параллельных потоков является возможным и в системах, имеющих одноядерный процессор. В таком случае система должна периодически переключаться между потоками, поочередно предоставляя возможность выполнения то одному, то другому потоку. Подобная схема получила название псевдо параллелизмом. Система должна запомнить состояние (контекст) каждого потока, перед тем как переключиться на другой поток.