




















Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Os melhores documentos à venda: Trabalhos de alunos formados
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Comunidade
Peça ajuda à comunidade e tire suas dúvidas relacionadas ao estudo
Descubra as melhores universidades em seu país de acordo com os usuários da Docsity
Guias grátis
Baixe gratuitamente nossos guias de estudo, métodos para diminuir a ansiedade, dicas de TCC preparadas pelos professores da Docsity
Uma introdução à programação concorrente, abordando conceitos como threads, sincronização e comunicação entre threads. Ele explica os objetivos da programação concorrente, como reduzir o tempo de processamento, aumentar a confiabilidade e obter especialização de serviços. O documento também detalha os comandos de controle de fluxo de execução, a criação e execução de threads, tanto por meio de subclasses da classe thread quanto por implementação da interface runnable. Além disso, são discutidos os estados de execução de threads, a manipulação de prioridades e a influência do sistema operacional no ambiente de execução. Por fim, o documento menciona algumas questões importantes em multithreading, como segurança, longevidade e desempenho.
Tipologia: Resumos
1 / 28
Esta página não é visível na pré-visualização
Não perca as partes importantes!
O que são Threads?
Criação e métodos de Threads
Sincronização
Comunicação entre Threads
O mundo real funciona concorrentemente: várias atividadespodem ser executadas em paralelo. Exemplo: uma pessoapode estar
respirando, e,
falando, e
escrevendo, e
lendo, etc.
Computadores também operam concorrentemente.Exemplo: um computador pode estar
compilando um programa, e
recebendo uma mensagem, e,
imprimindo um arquivo, e,
tocando música, etc.
Compilador: compilar um programa
Navegador: receber uma mensagem e exibir animação
Subsistema de e/s: imprimir um arquivo
Subsistema de áudio: tocar música
Definição básica
: “Fluxo de controle seqüencial isolado
dentro de um programa.”
Outra denominação: LightWeight Processes
Programas multithreaded
: Múltiplos threads concorrentes
de execução num único programa, realizando váriastarefas “ao mesmo” tempo.
Exemplo: programa do usuário + coleta de lixo
Diferentes threads podem executar em diferentesprocessadores, se disponíveis, ou compartilhar umprocessador único
Diferentes threads no mesmo programa compartilham umambiente global (memória, processador, registradores, etc.)
Exemplo: interfaces com o usuário, onde cada eventocorresponde a uma ação
Criar uma subclasse daclasse Thread
public class MyClass
extends Thread { ... }
Implementar a interfaceRunnable;
public class MyClass
extends Appletimplements Runnable {... }
class Thread
class MyClass
class Applet
interfaceRunnable
class MyClass
Métodos
Estruturas de dados
classe
Dados do
Objeto
Dados do
Objeto
Execução
concorrente do
mesmo código
Declarar uma nova classe que seja subclasse da classeThread
Sobrescrever o método run() com o código que seráexecutado pela thread
Instanciar a nova classe
Invocar seu método start(); o método rodará em seupróprio thread de controle
Alguns métodos da classe Thread
start():
inicia a execução do Thread;
sleep():
suspende a execução por um determinado tempo
(especificado em milisegundos) e automaticamente recomeça a
execução;
destroy():
destrói esta thread.
Demais métodos: jdk1.2.1/docs/api/java/lang/Thread.html
public class CorridaT{
public static void main(String[] args){
Piloto um = new Piloto("Rubinho");Piloto dois = new Piloto("Schumacher");Piloto tres = new Piloto(”Raikonnen");um.start();dois.start();tres.start();
CorridaT
um
dois
tres
Quem terminará antes?
Primeira volta:RubinhoPrimeira volta:SchumacherPrimeira volta: Raikonnen Rubinho -> Terminou a Corrida !!!Raikonnen -> Terminou a Corrida !!!Schumacher -> Terminou a Corrida !!!
CorridaT
um
dois
tres
Usada quando não se pode herdar da classe Thread, poishá necessidade de herança de alguma outra classe
possui apenas o método run()
Cria-se um objeto da classe base Thread, porém o códigoa ser executado está descrito na classe dousuário(derivada + ancestrais).
Criação e execução:
Declarar uma nova classe que implementa a interface Runnable
Sobrescrever o método run()
Criar um objeto da classe Thread.
Exemplo: Thread um = new Thread(this);
class PilotoR
implements
Runnable{
private String nome;public PilotoR(String str){
nome = str;
} public void
run
(){
System.out.println("* LARGADA *");System.out.println(" Primeira volta:" + nome);for(int cont=0; cont<10000; cont++) {};System.out.println(nome + " -> Terminou a Corrida !!!");
}
}