Avaliação dos mecanismos de concorrência na API do Java 8


Autoria(s): Águas, Daniel Jorge Oliveira
Contribuinte(s)

Nogueira, Luís Miguel Pinho

Data(s)

12/04/2016

12/04/2016

01/10/2015

01/10/2015

Resumo

As plataformas com múltiplos núcleos tornaram a programação paralela/concorrente num tópico de interesse geral. Diversos modelos de programação têm vindo a ser propostos, facilitando aos programadores a identificação de regiões de código potencialmente paralelizáveis, deixando ao sistema operativo a tarefa de as escalonar dinamicamente em tempo de execução, explorando o maior grau possível de paralelismo. O Java não foge a esta tendência, disponibilizando ao programador um número crescente de bibliotecas de mecanismos de sincronização e paralelização de código. Neste contexto, esta tese apresenta e discute um conjunto de resultados obtidos através de testes intensivos à eficiência de algoritmos de ordenação implementados com recurso aos mecanismos de concorrência da API do Java 8 (Threads, Threadpools, ExecutorService, CountdownLach, ExecutorCompletionService e ForkJoinPools) em sistemas com um número de núcleos variável. Para cada um dos mecanismos, são apresentadas conclusões sobre o seu funcionamento e discutidos os cenários em que o seu uso pode ser rentabilizado de modo a serem obtidos melhores tempos de execução.

Multicore platforms made parallel/concorrent programming a topic of general interest. Several programming models have been proposed, making it easier for Various programming models have been proposed, making it easier for developers to identify potentially parallelizable code regions, leaving to the Operative System the task of scheduling the run time, exploring the greatest possible degree of parallelism. Java is no exception to this trend, offering the developer a growing number of libraries with synchronization mechanisms and parallelization of code. This thesis, within this context, presents and discusses a set of results obtained through extensive testing the efficiency of sorting algorithms implemented using the concorrency mechanisms of the Java API 8 (Threads, Threadpools, ExecutorService, CountdownLach, ExecutorCompletionService and ForkJoinPools) in systems with a variable number of cores. For each of the mechanisms, findings are presented on their functioning and discussed the scenarios where their use may be more advantageous in order to secure better runtimes.

Identificador

http://hdl.handle.net/10400.22/8035

201754231

Idioma(s)

por

Direitos

openAccess

Palavras-Chave #Multicore #Parallel/concorrent programming #Operative System #Java #Synchronization #Algorithms #API #Núcleos #Programação paralela #Programação concorrente #Sistema operativo #Sincronização #Algoritmos #Arquiteturas, Sistemas e Redes
Tipo

masterThesis