Ambiente Multithread
Para reduzir o tempo de espera e também economizar recursos do sistema, foi criado o conceito de threads. Em um ambiente multithread um processo pode responder por várias tarefas simultaneamente ou concorrentemente, dependendo da capacidade do processador. Cada thread é responsável por uma tarefa dessa. A figura abaixo nos dá um melhor entendimento do que seria um processo multithread.
Figura 1. Ilustração de um processo multithread com 3 threads
Em um ambiente multithread, os threads compartilham o processador como se fossem processos (Ex.: Enquanto um espera para executar uma operação de entrada e saída, outro pode estar sendo executado de forma paralela). Cada thread possui suas instruções próprias, porém todos compartilham do mesmo endereço na memória, devido ao fato de fazerem parte de um mesmo processo. Essa é a principal diferença entre threads e subprocessos. Enquanto os subprocessos possuem endereços individuais, os threads compartilham desse mesmo endereço. Apesar de poderem afetar uns aos outros devido a esse compartilhamento, geralmente threads são desenvolvidos para trabalharem de forma colaborativa. As vantagens da utilização de multithreads são várias. Uma das principais é a melhor utilização da memória, já que não é necessário ocupar muito espaço na memória, pois se trata de apenas um processo. Outra vantagem é a melhor utilização dos recursos computacionais, já que com multithreads essa utilização pode ser feita de maneira concorrente. Outra grande vantagem da utilização de threads é que enquanto uma aplicação principal é executada em um thread, outras essenciais podem ocorrer em background. Esse recurso é utilizado por vários editores de texto, editores de imagens, e até jogos.
WERNET, Oswaldo; “Multithread”. Universidade Federal do Rio de Janeiro - UFRJ
http://www.training.com.br/lpmaia/multithread.pdf