Threads
Aluno:Hugo Humberto
Thread
Definição: um thread é um fluxo único de controle sequencial dentro de um programa.
Multithread
Definição: Multithread nada mais é que a execução de threads simultaneamente.
Sincronização
Definição:É definir qual thread terá o direito de acessar uma determinada parte do programa não podendo sendo as duas simultaneamente.
Compartilhamento
Definição:É o ponto em comum que duas threads ou mais tem acesso em um determinado programa.
Exemplo pratico (Produtor/Consumidor) venda de passagem
Uma thread (produtora) gera uma certa quantidade de passagens e as armazena em um local do programa e aguarda (limbo por exemplo). Quando é efetuada a venda de uma passagem uma outra thread (Consumidora) utiliza a numeração das passagens armazenadas no limbo assim que estiverem disponíveis.
As duas threads compartilham as informações entre si através de uma sub classe do limbo para garantir que o consumidor receba uma numero de passagem que já não tenha sido vendida fazendo isso através de sincronização.
As atividades das duas threads devem ser sincronizados de duas formas diferentes * Primeiro, os threads não devem acessar o limbo simultaneamente * Um thread pode impedir isso travando o objeto (locking); * Quando um objeto está travado, um outro thread que chamar um método sincronizado no mesmo objeto vai bloquear até o obvjeto ser destravado.
* Segundo, os threads devem coordenar seu trabalho * O produtor deve ter uma forma de dizer ao consumidor que um novo número está disponível para consumo; * O consumidor deve ter uma forma de dizer ao produtor que o número foi consumido, liberando a produção de outro número; * A classe Object provê métodos (wait, notify, notifyAll) para permitir que threads esperem por uma condição e notificar outros threads quando uma condição ocorre.
Bibliografia
http://www.dsc.ufcg.edu.br/~jacques/cursos/map/html/threads/threads1.html