O que é um thread?
Fazendo mais de uma coisa ao mesmo tempo
Bubble Sort
Bubble Sort
Bi-Direcional
Quick Sort
alt="Your browser understands the APPLET> tag but isn't running the applet, for some reason."Your browser is completely ignoring the APPLET> tag!
alt="Your browser understands the APPLET> tag but isn't running the applet, for some reason."Your browser is completely ignoring the APPLET> tag!
alt="Your browser understands the APPLET> tag but isn't running the applet, for some reason."Your browser is completely ignoring the APPLET> tag!
Código fonte:
SortItem.java
- O applet
SortAlgorithm.java
- O algoritmo de ordenação genérico
BidirBubbleSortAlgorithm.java
- bubble sort bi-direcional
Sort/BubbleSortAlgorithm.java
- bubble sort
QSortAlgorithm.java
- quick sort
Inicie cada um dos applets acima clicando em cada um deles
Enquanto os applets trabalham, você pode fazer scroll da página no browser, abrir opções do browser, etc.
Isso é possível devido a
threads
Outros nomes: contexto de execução, lightweight process
É um fluxo sequencial de controle no programa
Um thread é criado pelo browser para executar cada applet
Os threads executam dentro do mesmo programa (o browser, neste caso)
Cada operação de ordenação executa ao mesmo tempo que as outras e de forma independente
O que é um thread?
Para programas "normais" (single thread), tem um único ponto de execução dentro do programa num momento particular
Um thread é semelhante: tem um início, uma sequência e um fim, como um programa "normal"
Tem um único ponto de execução no certo momento dentro de um thread
Um thread não é um programa, mas executa
dentro
de um programa (ver figura)
Definição: um thread é um fluxo único de controle sequencial dentro de um programa
A coisa fica mais interessante quando temos mais de um thread no mesmo programa (ver figura)
Um browser é um exemplo de uma
aplicação multithreaded
Várias coisas podem ocorrer ao mesmo tempo:
scroll
download de um applet
download de uma imagem
tocar uma animação
tocar um som
imprimir uma página em background
download de uma nova página
olhar 3 applets de ordenação trabalhando
Um thread parece ser um processo mas
Compartilha o mesmo "espaço de endereçamento"
É muito rápido chavear a execução entre threads mas não entre processos
Um thread recebe alguns recursos próprios durante a execução
Uma pilha de execução para poder chamar métodos, passar parâmetros, alocar variáveis locais
Um "Program Counter"
Chamamos isso o "contexto de execução do thread"
Alguns autores chamam thread de "contexto de execução"
Bibliografia
Tutorial da Sun
programa