Threads (definição/utilização)

Olá pessoal. gostaria de intender esse termo thread. dei uma pesquisada mas não consigo imaginar bem oque é um thread e/ou quando utilizar um thread.

Desde já mto Obrigado.

Eu não sei te explicar de um modo técnico, nem sei se adiantaria, então vou tentar te explicar de um modo mais simples:

Threads são processos que correm em paralelo. Um sistema multi-thread permite que você execute vários processos ao mesmo tempo. Logo, com um sistema multi-thread, você pode ouvir música enquanto navega na internet e baixa um programa. Isso são threads: processos paralelos. É claro que isso não quer dizer que um programa possui apenas uma thread: pelo contrário, com Java (e outras linguagens, claro) você pode criar várias threads para rodar em um só programa. Veja um jogo: existe uma thread para renderizar a imagem, outra para tocar os sons, outra para fazer os cálculos das físicas etc

Entende? :slight_smile:

[quote=War Paz]Eu não sei te explicar de um modo técnico, nem sei se adiantaria, então vou tentar te explicar de um modo mais simples:

Threads são processos que correm em paralelo. Um sistema multi-thread permite que você execute vários processos ao mesmo tempo. Logo, com um sistema multi-thread, você pode ouvir música enquanto navega na internet e baixa um programa. Isso são threads: processos paralelos. É claro que isso não quer dizer que um programa possui apenas uma thread: pelo contrário, com Java (e outras linguagens, claro) você pode criar várias threads para rodar em um só programa. Veja um jogo: existe uma thread para renderizar a imagem, outra para tocar os sons, outra para fazer os cálculos das físicas etc

Entende? :slight_smile: [/quote]
Cara era só dizer que threads são tarefas que podem ser executadas de forma assíncrona dentro de uma processo,que possuem a vantagem de poderem compartilhar recursos alocados pelo processo. É claro que threads são uma maravilha,mas se deve tomar muito cuidado ao se desenvolver sistemas multi-thread,pois a concorrência por acesso a um recurso entre threads ,quando não é bem gerenciada , pode causar grandes problemas dentro de uma aplicação.

O exemplo de ouvir música enquanto faz outra coisa é meio perigoso.

Realmente, isso pode acontecer em threads separadas, porém isso não quer dizer que elas estão sendo executadas simultaneamente.

Se só existe uma CPU, somente uma thread é realmente executada por vez, mas o processador alterna entre elas tão rapidamente que parece que correm em simultâneo.

A definição simples de thread é uma linha de execução, algumas traduções também dizem segmento.

Acho que este wiki é melhor:

Possui, inclusive, exemplos em C e Java.