Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas

Criação e Métodos de Threads, Resumos de Programação para Java

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

2021

Compartilhado em 08/05/2024

gust-barroso
gust-barroso 🇧🇷

1 / 28

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
Execução concorrente em
Java: threads
O que são Threads?
Criação e métodos de Threads
Sincronização
Comunicação entre Threads
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c

Pré-visualização parcial do texto

Baixe Criação e Métodos de Threads e outras Resumos em PDF para Programação para Java, somente na Docsity!

Execução concorrente em

Java: threads



O que são Threads?



Criação e métodos de Threads



Sincronização



Comunicação entre Threads

Programação concorrente:introdução



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.

Aplicações

Cada atividade possui uma seqüência própria deoperações

Programas

independentes

podem se encarregar

de



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

Multiprogramação

: vários programas executam

sob controle do sistema operacional

Programação concorrente

Uma unidade concorrente é um componente deum programa que não exige a execuçãoseqüencial, ou seja, que sua execução sejarealizada antes ou após a execução de outroscomponentes do programa

O termo programação concorrente é usado nosentido abrangente, para designar a programação paralela

e a programação

distribuída

Concorrência relaciona-se com fluxo de controle:em um programa, existe mais de um fluxo decontrole ativo.

Threads: o que são?



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.)

Algumas aplicaçõesmultithreaded

Programação Reativa : aplicação responde aeventos de entrada.



Exemplo: interfaces com o usuário, onde cada eventocorresponde a uma ação

Programação Interativa: uma tarefa para fazeralguma interação com o usuário, outra para exibirmensagens, outra para fazer animação, etc..

Paralelismo físico/distribuição: para tirar vantagemde múltiplas CPUs centralizadas ou distribuídas

Criação de threads em Java

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

Instanciação de objetosconcorrentes

Métodos

Estruturas de dados

classe

Dados do

Objeto

Dados do

Objeto

Execução

concorrente do

mesmo código

RA
RA

Classe Thread

Usada quando a classe a ser executadaconcorrentemente não deriva de outra classe

Contém métodos para controlar a execução

Criação e execução:



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

Contexto da classe Thread

java.lang.Objectjava.lang.Thread

public class Thread

extends Object

implements Runnable

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

Exemplo de execução

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?

Resultado de uma execução

*** LARGADA ****** LARGADA ****** LARGADA ***

Primeira volta:RubinhoPrimeira volta:SchumacherPrimeira volta: Raikonnen Rubinho -> Terminou a Corrida !!!Raikonnen -> Terminou a Corrida !!!Schumacher -> Terminou a Corrida !!!

CorridaT

um

dois

tres

Interface Runnable



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);

Exemplo de implementaçãoRunnnable (1)

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 !!!");

}

}