Thread

1) Na Internet em grupos de notícias Usenet e fóruns similares, um thread é uma sequência de respostas a uma mensagem inicial. Isto permite que você siga ou participe de uma discussão individual em um grupo de notícias dentre os muitos que podem estar lá. Um tópico é normalmente mostrado graficamente como uma mensagem inital e mensagens sucessivas "penduram" a mensagem original. Como usuário de um grupo de notícias, você contribui para um thread especificando um tópico "Referência" como parte de sua mensagem.

2) Em programação de computador, um thread é uma informação de espaço reservado associada a um único uso de um programa que pode lidar com vários usuários simultâneos. Do ponto de vista do programa, um tópico é a informação necessária para servir um usuário individual ou uma solicitação de serviço em particular. Se vários usuários estiverem usando o programa ou solicitações simultâneas de outros programas, uma thread é criada e mantida para cada um deles. O thread permite que um programa saiba qual usuário está sendo servido, pois o programa é reentrado alternadamente em nome de diferentes usuários. (A informação de um thread de uma maneira é mantida armazenando-a em uma área de dados especial e colocando o endereço dessa área de dados em um register. O sistema operacional sempre salva o conteúdo do registro quando o programa é interrompido e o restaura quando dá novamente o controle do programa.)

Uma thread e uma tarefa são similares e muitas vezes confusos. A maioria dos computadores só pode executar uma instrução de programa de cada vez, mas como eles operam tão rápido, parecem executar muitos programas e servir a muitos usuários simultaneamente. O sistema operacional do computador dá a cada programa uma "volta" na execução, então requer que ele espere enquanto outro programa recebe uma volta. Cada um desses programas é visto pelo sistema operacional como uma tarefa para a qual determinados recursos são identificados e mantidos sob controle. O sistema operacional gerencia cada programa aplicativo no sistema do seu PC (planilha eletrônica, processador de texto, navegador da Web) como uma tarefa separada e permite que você olhe e controle itens em uma lista de tarefas. Se o programa inicia uma solicitação de E/S, como ler um arquivo ou escrever para uma impressora, ele cria um tópico. Os dados mantidos como parte de um thread permitem que um programa seja reentrado no lugar certo quando a operação de E/S é concluída. Enquanto isso, outros usos simultâneos do programa são mantidos em outros threads. A maioria dos sistemas operacionais atuais fornece suporte tanto para multitarefas quanto para multi-tarefas. Eles também permitem multithreading dentro dos processos do programa, de modo que o sistema é salvo o overhead da criação de um novo processo para cada thread.

A especificação POSIX.4a C fornece um conjunto de interfaces de programas aplicativos que permitem que um programador inclua suporte a threads no programa. Ferramentas de desenvolvimento de programa de nível superior e subsistemas de aplicação e middleware também oferecem facilidades de gerenciamento de threads. Linguagens que suportam programação orientada a objetos também acomodam e encorajam multithreading de várias maneiras. Java suporta multithreading, incluindo modificadores de sincronização na sintaxe da linguagem, fornecendo classes desenvolvidas para multithreading que podem ser herdadas por outras classes, e fazendo "coleta de lixo" de fundo (recuperando áreas de dados que não estão mais sendo usadas) para múltiplos threads.