Grupos de Threads em Java

Slides:



Advertisements
Apresentações semelhantes
|Introdução a Java para programadores Telis. Jogo de Dados simples O jogo é jogado por dois jogadores. Cada jogador faz sua jogada (lança um dado), e.
Advertisements

Tratamento de Exceções
Java: Pacotes e Modificadores de Visibilidade
Persistência de objetos em arquivo texto usando Java
Java RMI Alcides Calsavara. Objetivos Permitir que um método de uma classe Java em execução em uma máquina virtual JVM chame um método de um objeto (instância.
Iniciação ao Java – Márcio F. Campos
SSC SISTEMAS OPERACIONAIS I
Polimorfismo e Classes Abstratas Profa
Programação Concorrente
Membros estáticos.
Capítulo 13 Pacotes. 2 Capítulo 13 – Pacotes Pacotes Pacote Cláusula package Cláusula import Executando uma classe de pacote Modificadores de acesso.
Estrutura de Dados em Java
Paradigmas de Linguagens de Programação Paradima da Programação Orientada à Objetos Professor: Armando Hage Belém-2008.
JAVA: Conceitos Iniciais
O Mecanismo de Threads em Java 2. Criar uma classe herdeira da super classe Thread public class minhaThread extends Thread{ public class minhaThread extends.
Concorrência em Java Threads em Java.
Threads: Introdução e Implementação
Tipos Agregados Homogêneos e Listas
Programação Orientada a Objetos com Java
Concorrência em Java Threads em Java.
Threads, Gerenciamento de Threads Pool de Threads, Grupo de Threads Variáveis Locais à Threads.
Concorrência em Java Threads em Java.
Infra-Estrutura de Comunicação (IF678)
JAVA Linguagem Ambiente de Desenvolvimento
METODOLOGIA PARA DESENVOLVIMENTO DE SISTEMAS Prof. Dr. rer. nat. Daniel D. Abdala 1.
Chamada Remota de Procedimentos
Desenvolvimento para Android Aula 7 - Services
JUnit “Keep the bar green to keep the code clean” JUnit Site.
1 Mobilidade de Código com μcode Projeto Giga Alexandre Lages
UTFPR – Campus Curitiba - DAELN Cursos de Eng. Eletrônica/Eng. da Computação IF62C - Fundamentos de Programação Semana 12 – Overloading X Overriding Prof.a.
T. D. S. I. PARA WEB Prof. Emmanuel Nolêto. Java RMI.
By Ducheno Kelly Centro de Formação São Domingos.
Concorrência e thread Petrônio Júnior(pglj) Márcio Neves(mmn2)
Paradigmas da Programação – Semestre 1 – Aula 9 Professor: Eduardo Mantovani )
Programação com Threads
Introdução às Java Threads
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Java Kickstart, day 2 Semelhanças com linguagem C.
Prof.: Bruno Rafael de Oliveira Rodrigues. Construtor é bloco declarado que é chamado no momento em que o Objeto é criado (instanciado). Todas as classes.
Implementação Orientada a Objetos – Aula 05 Construtores e sobrecarga de métodos Prof. Danielle Martin Universidade de Mogi das Cruzes
Polimorfismo.
Coleções, Genéricos, Threads Marco Antonio. Collection Principais métodos da interface Collection.
1 Marcio de Carvalho Victorino JAVA. 2 Declaração de Atributos [ ] [transient] [volatile] [static] [final] ; controle de acesso –public, package (default),
Classes Abstratas e Interface
M ÉTODOS DA C LASSE S TRING. FUNÇÕES COM STRING Uma string é um tipo texto que corresponde à união de um conjunto de caracteres. Em Java, as strings são.
Coleções em Java - Parte 2
Herança Modelagem e Programação Orientada a Objetos
Construtores e Destrutores
Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Variáveis e métodos estáticos, Passagem de.
Socket em Java.
Sistemas Distribuídos Aula 05 – Programação Multithread/Paralela
Aula prática de Concorrência Equipe de Monitoria: Bruno Pereira - bpe Davi Pires - dpr Guilherme Barros – gbs2 Thiago Cavalcanti - trc.
Real-Time Specification for Java Descrição da Real-Time Specification for Java Alessandra Vargas Fernando Ataíde Marcio Oliveira Universidade Federal do.
1 JUnit. 2 Por que testar? Qualidade: Código testado é mais confiável –Como saber se o recurso funciona sem testar? Coragem para mudar: o programador.
Programação Distribuída em Java Aula Na aula passada vimos: I/O Streams Filtros Readers and Writers.
Programação com Threads Threads Java como um Estudo de Caso.
Java Threads.
Igor Steinmacher, MSc. Java!!!!
Polimorfismo - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour ▐ Polimorfismo ▐ Exemplo ▐ Classes Abstratas.
Capítulo 8 Threads.
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Infra-Estrutura de Comunicação (IF678) Aula Prática 03 – CIn/UFPE Davi Duarte Cynthia Raphaella Ivan França Jéssica Barbalho Larissa Paz Paulo Fernando.
RMI Java Remote Method Invocation em Java. Introdução Java Remote Method Invocation (Java RMI) permite desenvolver sistemas distribuídos baseados em Java.
CURSO JAVA BÁSICO Módulo 9 – slide 1 Módulo 10 Threads.
1 Interface (o termo) » Interface (a palavra reservada): Java estendeu o conceito de interfaces à um nível ainda mais flexível que permite construir entidades.
ProgramaçãoConcorrente Glêdson Elias
Laboratório de Computação Aula 06 e 07 – Implementação de classes Prof. Fábio Dias
Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos
ProgramaçãoConcorrente Glêdson Elias
Transcrição da apresentação:

Grupos de Threads em Java Escalonamento em Pool de Threads

Máquina Virtual Java, Processos e Threads Cada instância da JVM corresponde a um processo do sistema operacional hospedeiro. A JVM não possui o conceito de processos – apenas implementa threads internamente. Ao ser iniciada, a JVM executa o método main() do programa na thread principal, e novas threads podem ser criadas a partir desta. Threads de uma mesma JVM compartilham memória, portas de comunicação, arquivos e outros recursos.

Nome da Thread Identificador não-único da Thread. Pode ser definido ao criar a Thread com Thread(String) ou Thread(Runnable, String) Se não for definido na criação, o nome da Thread será “Thread-n” (com n incremental) Pode ser redefinido com setName(String) Pode ser obtido através do método getName()

Grupos de Threads Às vezes é útil identificar várias threads como pertencentes a um grupo de threads. A classe ThreadGroup contém métodos para criar e manipular grupos de threads. Durante a construção, o grupo recebe um nome único, através de um argumento String.

Grupos de Threads A classe ThreadGroup define um grupo de threads que são controladas conjuntamente. O grupo de threads é definido usando o construtor thread(ThreadGroup, ...).

Criando grupo de threads // Cria grupo de Threads ThreadGroup myGroup = new ThreadGroup("MyThreads"); … // Cria Threads e as insere no grupo Thread myThread1 = new MyThread(myGroup,"MyThread"+i); Thread myThread2 = new MyThread(myGroup,"MyThread"+i); ... // Interrompe todas as Threads do grupo group.interrupt();

Gerenciando Grupos de Threads java.lang.Object java.util.concurrent.Executors A classe Executors estende a classe raiz Object. A classe Executors gerencia um grupo de threads. Interface Executor Interface ExecutorService

Gerenciando a Execução de Threads Gerenciamento através da classe Executors: SingleThreadExecutor usa uma thread para executar atividades seqüencialmente. FixedThreadPool usa um grupo de threads de tamanho fixo para executar atividades. CachedThreadPool cria threads sob demanda.

Threads e Atividades Java usa threads – fluxos de execução independentes de outros fluxos – para representar atividades independentes simultâneas.

Escalonamento de Atividades Um ScheduledExecutorService permite escalonar a execução de atividades, definindo um atraso para início da atividade e/ou um período de repetição entre execuções. SingleThreadScheduledExecutor usa uma thread para todas as atividades escalonadas. ScheduledThreadPool cria um grupo de threads para executar as atividades.

Exemplo de uso de Executors import java.util.concurrent.*; public class ExecutorTest { public static void main(String args[]) { ExecutorService exec = Executors newSingleThreadExecutor(); // ExecutorService exec = Executors.newFixedThreadPool(5); // ExecutorService exec = Executors.newCachedThreadPool(); for (int i=0; i<10; i++) { // Cria e executa as threads exec.execute (new ThreadSleep( ( long )( Math.Random()*10000))); } // Encerra o executor assim que as threads terminarem exec.shutdown();

Escalonamento com ScheduledExecutorService import java.util.concurrent.*; public class ScheduleThread extends Thread { public void run () { System.out.println(getName() + " executada."); } public static void main(String args[]) { ScheduledExecutorService exec = Executors.newSingleThreadScheduledExecutor() ; for (int i=0; i<10; i++) { long delay = (long) (Math.random()*10000); System.out.println("Thread-" + i + " será executada em "+ tempo + "ms."); // Escalona a execução da thread exec.schedule(newScheduleThread(), delay, TimeUnit.MILLISECONDS); } exec.shutdown();

Execução periódica de Threads com ScheduledExecutorService import java.util.concurrent.*; public class CountdownThread extends Thread { private static long tempo = 0, cont = 10, espera = 5, intervalo = 1; public CountdownThread(long tempo) { this.tempo = tempo; } public void run () { System.out.println(tempo +"segundos para o encerramento."); tempo--; } public static void main(String args[]) { ScheduledExecutorService exec = Executors.new SingleThreadScheduledExecutor(); exec.scheduleAtFixedRate(new CountdownThread(cont), espera, intervalo, TimeUnit.SECONDS); try { exec.awaitTermination(cont+espera, TimeUnit.SECONDS); } catch (InterruptedException ie) { ie.printStackTrace(); } exec.shutdown(); }