Gabriel de Oliveira Ramos Roland Teodorowitsch - Orientador
|
|
- Lídia Carreira Carneiro
- 6 Há anos
- Visualizações:
Transcrição
1 THREADS EM JAVA Gabriel de Oliveira Ramos Roland Teodorowitsch - Orientador Universidade Luterana do Brasil (Ulbra) Curso de Ciência da Computação Campus Gravataí Av. Itacolomi, Bairro São Vicente CEP Gravataí - RS RESUMO 15 de novembro de 2009 Este artigo apresenta o uso de threads na linguagem de programação Java, descrevendo a classe Thread bem como a interface Runnable. Menciona ainda algumas considerações importantes, como o ciclo de vida de threads, bem como questões sobre prioridades e sincronização de threads. Ao final, mostra um exemplo de aplicativo que utiliza threads bem como uma análise de desempenho de sua execução com e sem threads. Palavras-chave: Thread; Java. ABSTRACT Title: Java Threads This paper presents the use of threads in Java programming language, describing the Thread class and the Runnable interface. It mentions too some important considerations about the threads lifecycle and something about threads priorities and synchronization. Finally, shows a thread application example and an analysis of its execution. Keywords: Thread; Java. 1 INTRODUÇÃO O desempenho computacional é um assunto amplamente discutido desde os primórdios da computação. Atualmente, a maioria dos sistemas operacionais trabalha com multiprocessamento para conferir maior desempenho na execução de processos. Em um sistema operacional multiprocessado, algoritmos de escalonamento são utilizados para dividir a utilização da CPU entre os processos em execução. Este mecanismo confere uma resposta muito mais ágil para o usuário uma vez que as tarefas parecem ser executadas ao mesmo tempo. Entretanto, este mecanismo não torna a execução de duas etapas distintas de um processo paralelas, torna paralela apenas a execução dos processos entre si. É neste ponto que se torna necessário o uso de threads. Threads podem ser definidas como fluxos seqüencias de execução de um programa. Logo, um programa pode dividir partes seqüenciais não concorrentes de sua execução em threads distintas, conferindo paralelismo na execução destas. Claro, partes concorrentes podem ser separadas em threads também, entretanto este tipo de procedimento não confere paralelismo, não justificando o uso desta técnica. Este artigo fala sobre o uso de threads na linguagem Java. Neste contexto, este artigo descreve a classe Thread e a interface Runnable, que podem ser utilizadas para se trabalhar com threads em Java. Na seqüencia é abordado o ciclo de vida de uma thread na máquina virtual Java (JVM), prioridades e sincronização de threads. Está presente neste artigo, também, um exemplo de aplicativo que utiliza threads, bem como uma análise do resultado de suas execuções utilizando quantidades variadas de threads. 2 THREADS EM JAVA A máquina virtual Java permite que uma aplicação tenha diversos fluxos seqüências de execução rodando concorrentemente (SUN, 2009a). Para se utilizar esta funcionalidade, a API Java disponibiliza a classe Thread e a interface Runnable. 2.1 A classe Thread A classe Thread é uma classe nativa da linguagem Java, existente desde a API 6.1, que permite representar um fluxo independente de execução dentro de um programa (JANDL, 2007, p. 262). Pode-se 1
2 definir uma thread a partir da criação de uma classe filha de Thread, ou seja, uma subclasse. Uma subclasse de Thread exige a implementação do método run(), que contém o código a ser executado pela thread em si. A Figura 1 mostra um exemplo de código de uma classe filha de Thread que cria aleatoriamente números de 0 a 99, parando apenas ao encontrar o número 50. public class ExemploThread extends Thread { public void run() { int total = 0; while ((int)(math.random()*100)!= 50) total++; System.out.println("Sou a " + this.getname() + " e tentei " + total + " vezes."); Figura 1 Exemplo de subclasse de Thread Para criar uma thread propriamente dita a partir de uma subclasse de Thread, basta declarar um objeto desta, utilizando o operador new para instanciá-la, bem como em qualquer outro tipo de objeto em Java. Instanciado o objeto a thread está pronta para ser rodada. Para isto, deve-se chamar o método start(), responsável por providenciar o seu escalonamento pelo sistema operacional e por executar o método run() (JANDL, 2007, p. 263). A Figura 2 mostra um exemplo deste processo de criação da thread. ExemploThread t = new ExemploThread(); t.start(); Figura 2 Exemplo de instanciação de um objeto de Thread e sua conseqüente execução Ao executar este código mais de uma vez, o resultado obtido pode ser o mesmo ou não, refletindo mais o estado do sistema do que da aplicação em si (JANDL, 2007, p.264). A JVM mantém um programa em execução enquanto suas threads permanecem ativas. De acordo com a Sun (2009a), uma thread é finalizada quando chega ao fim do método run() ou quando gera uma exceção não tratada, fazendo com que esta última seja lançada para o nível superior. 2.2 A interface Runnable Segundo a Sun (2009b), a linguagem de programação Java não permite herança múltipla, no entanto há uma alternativa para o uso de mais de uma superclasse, que é a utilização de interfaces. Com base neste conceito, desde a API 6.2 existe a interface Runnable, que possui um funcionamento bem semelhante ao da classe Thread, ao exigir a implementação do método run(). Diferente de implementações que utilizam a classe Thread diretamente, as que utilizam a interface Runnable possuem algumas particularidades. Após instanciar o objeto que possui a interface Runnable, é necessário instanciar também um objeto da classe Thread que receba em seu método construtor uma referência ao objeto da interface Runnable, bem como um nome para a thread criada. Após instanciar este objeto da classe Thread, pode-se iniciar a thread a partir do seu método start(). A Figura 3 mostra um exemplo de uma classe que implementa a interface Runnable, bem como da chamada desta classe a partir da criação de um objeto de Thread. public class ExemploRunnable implements Runnable { public void run() { int total = 0; while ((int)(math.random()*100)!= 50) total++; public class Main { public static void main(string[] args) { ExemploRunnable r = new ExemploRunnable(); Thread t = new Thread(r, "Thread 1"); t.start(); Figura 3 Exemplo de utilização de uma interface Runnable 2
3 Esta interface torna-se muito importante, pois em diversos momentos é necessário que uma classe tenha dois pais ao mesmo tempo. Um bom exemplo deste tipo de aplicação é para interfaces gráficas. Uma classe criada para fazer uma janela, por exemplo, pode ser filha da classe JPanel e, para possibilitar paralelismo e uma melhor experiência para o usuário, pode implementar a classe Runnable. 2.3 Ciclo de vida de uma Thread Uma thread, do momento em que é criada até o qual é finalizada, passa por diversos estados e transições. Este conjunto de estados e transições caracteriza o ciclo de vida de uma thread, o qual pode ser visualizado na Figura 4. Figura 4 Ciclo de vida de threads Como mencionado anteriormente, as threads são criadas a partir de sua instanciação. Ao disparar o método start(), ela será colocada na lista de threads prontas a serem executadas pelo sistema operacional. Quando o sistema operacional seleciona uma thread para ser executada, ela permanece no estado Execução, produzindo as ações do método run(). Segundo Jandl (2007), uma thread permanece em Execução até que: seu tempo de uso da CPU se esgote ou com a chamada do método yield() quando executa um sleep(), permanecendo no estado Suspenso durante o tempo estabelecido e voltando ao estado Pronto, em seguida; quando executa um wait(), permanecendo no estado Suspenso até que outra thread execute um notify() ou notifyall(), voltando ao estado Pronto em seguida; quando necessita de uma operação de I/O, ficando no estado Bloqueado até que a operação seja concluída, voltado ao estado Pronto; se a thread finalizar a execução do seu método run() ou quando for executado o método interrupt(), indo para o estado Finalizado. 2.4 Prioridades A prioridade de uma thread corresponde a preferência que ela terá perante as demais durante sua execução. Quanto maior a prioridade de uma thread, maior será sua preferência no uso da CPU. Threads de mesma prioridade costumam partilhar o tempo de CPU igualmente. A prioridade é extremamente ligada ao algoritmo de escalonamento de CPU que o sistema operacional utiliza. Para definir a prioridade de uma thread, são usados números de 1 a 10, sendo que o número 5 é usado para definir a prioridade como normal. Entretanto, nem todos os sistemas operacionais possuem as mesmas prioridades de uma thread Java. Portanto, para garantir que uma thread com prioridade 10 tenha prioridade alta tanto em um sistema operacional cuja prioridade máxima seja 10 quanto em outro que seja 100, a JVM traduz a prioridade especificada no código para a do sistema operacional, logo uma prioridade 10 em Java pode ser traduzida para uma prioridade 100, por exemplo. 3
4 2.5 Sincronização Durante a execução de threads, há casos em que elas trabalham independentemente uma da outra, sem necessidade de qualquer comunicação entre elas e há casos em que elas comunicam-se de alguma forma ou utilizam dados em comum, denominadas assíncronas e síncronas, respectivamente. Em threads síncronas, geralmente é necessário que a informação que está sendo compartilhada seja consistente, evitando que duas threads mexam nesta ao mesmo tempo, gerando um resultado inconsistente. Para tanto, na linguagem Java há um mecanismo de sincronização, onde esta consistência pode ser garantida. Tal mecanismo pode ser utilizado com a palavra reservada synchronized, aplicada a um método, a um bloco ou mesmo a uma diretiva isolada. Os métodos wait(), notify() e notifyall() também são muito importantes na sincronização, sendo responsáveis por provocar, respectivamente: uma espera, a liberação de uma ou mais threads em espera (JANDAL, 2007, p. 282). 3 EXEMPLO PRÁTICO Para demonstrar o funcionamento de threads foi feito um aplicativo em Java para simular a utilização da distribuição de uma tarefa entre n elementos processadores, conhecidos na área de sistemas distribuídos como Eps (Elementos Processadores). A tarefa é básica: verificar se os números de um dado intervalo são primos ou não. 3.1 O aplicativo Neste aplicativo foram utilizadas duas classes: a classe EP, filha da classe Thread, que é responsável por realizar a tarefa; e a classe Main, que instancia os objetos da classe EP executando-os em seguida. Inicialmente é definido na classe Main o número de threads a ser utilizado pelo aplicativo e o intervalo da seqüência de números a ser processada. Estes valores são armazenados em variáveis para que sejam utilizados posteriormente pela classe EP. Em seguida, as instâncias da classe EP são criadas, recebendo como parâmetros para seu método construtor: o número da thread, iniciando em 0; o número total de threads, definido anteriormente; o início e o fim do intervalo, também definidos anteriormente. Após instanciadas, as threads têm sua execução iniciada, para que a tarefa comece a ser resolvida. A classe EP utiliza alguns conceitos básicos de computação distribuída. Portanto, foi necessário dividir a seqüência de números entre as threads existentes. Para tal finalidade, uma thread verifica todos os números da seqüência que são múltiplos de seu número, recebido como parâmetro no seu método construtor. A Figura 5 mostra o código-fonte das duas classes mencionadas. public class Main { public static void main(string[] args) { //Variável para determinar o número de threads int nep = 2; //Variáveis para determinar o intervalo a ser processado int inis = 2, fims = 1000; //Instanciação das threads EP ep0 = new EP(0, nep, inis, fims); EP ep1 = new EP(1, nep, inis, fims); //Início da execução das threads ep0.start(); ep1.start(); public class EP extends Thread { //Variáveis para guardar o número da thread atual //e o número total de threads, respectivamente private int EPid, nep; 4
5 //Variáveis para determinar o intervalo a ser processado private int inis, fims; //Variável para controlar se o número é primo ou não private boolean primo; public EP(int EPid, int nep, int inis, int fims) { this.epid = EPid; this.nep = nep; this.inis = inis; this.fims = fims; public void run() { //Percorre apenas os númeroes correspondentes à thread, //do intervalo especificado for (int x = EPid + inis; x <= fims; x = x + nep) { //Limpa a variável de controle primo = true; //Verifica se o número é primo for (int y = 2; y < x; y++) if (x % y == 0) primo = false; //Imprime o resultado if (primo) System.out.println("O número " + x + " é primo."); else System.out.println("O número " + x + " não é primo."); Figura 5 Exemplo de um aplicativo utilizando threads Como pode ser observado na Figura 5, neste caso estão sendo utilizadas apenas duas threads para processar o intervalo de 2 a Os resultados Para demonstrar o desempenho do uso de threads em um aplicativo o código da Figura 5 foi executado utilizando quantidades variadas de threads, com os tempos execução contabilizados, para o intervalo de 2 a (entre dois e cem mil). Para tal tarefa foi utilizado um computador com processador Intel Core2 Duo que, por possuir dois núcleos físicos, favorece a utilização de threads. O sistema operacional utilizado foi o Windows Vista. A Tabela 1 apresenta os resultados obtidos nas diversas execuções do aplicativo. Tabela 1 Relação dos tempos de execução, em segundos, do aplicativo Threads utilizadas Tempo para números Tempo para números Como pode ser observado na Tabela 1, a utilização de mais de uma thread para executar uma tarefa traz grandes ganhos. Para um intervalo de cinqüenta mil números, tem-se um ganho de aproximadamente 27% utilizando duas threads e de aproximadamente 32% utilizando oito threads. Já para um intervalo de 5
6 cem mil números o ganho sobe para quase 29% quando se utilizam duas threads e para quase 36% utilizando oito threads. Percebe-se, portanto, que há um ganho considerável ao utilizar threads em um aplicativo. 4 CONCLUSÃO Este artigo apresentou o uso de threads na linguagem de programação Java, bem como algumas de suas principais características e propriedades, esclarecendo de uma forma simplificada seus conceitos principais. Foi feita também uma análise prática dos benefícios que a utilização de threads em um aplicativo pode trazer. Maiores detalhes e esclarecimentos mais aprofundados sobre o tema podem ser consultados nas referências deste artigo. REFERÊNCIAS JANDL JUNIOR, Peter. Java: guia do programador. São Paulo: Novatec, p. SUN Microsystems. Thread (Java Platform SE 7 b66). Santa Clara: SUN, Disponível em: < Acesso em: 17 out SUN Microsystems. Interfaces. Santa Clara: SUN, Disponível em: < Acesso em: 18 out
PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula 11 - Threads e Concorrência
Aula 11 - Threads e Concorrência Conteúdo Programático desta aula Apresentar os Conceitos de Threads, Concorrência e Sincronização. Verificar a aplicabilidade destes conceitos no mercado, bem como sua
Leia maisThreads. O que é uma Thread? Paralelismo
Threads em Java 1 O que é uma Thread? Paralelismo Threads Multi- threading é o mecanismo de concorrência suportado explicitamente pela linguagem Java. Os mecanismos de gerenciamento e sincronização de
Leia maisUNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO Bacharelado em Sistemas de Informação. Processamento Paralelo Threads. Aluno: Wagner Palacio
UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO Bacharelado em Sistemas de Informação Processamento Paralelo Threads Aluno: Wagner Palacio Turma: 3º período Professor: Giordano Cabral Recife, 29 de maio de 2012
Leia maisMULTITHREADING. Prof.: Michele Nasu Tomiyama Bucci
MULTITHREADING Prof.: Michele Nasu Tomiyama Bucci Introdução O corpo humano realiza uma grande variedade de operações paralelamente, ou concorrentemente. Os computadores também realiza operações concorrentemente.
Leia maisProgramação Concorrente com Thread Java. Luiz Affonso Guedes Sistemas Distribuidos
Programação Concorrente com Thread Java Luiz Affonso Guedes Sistemas Distribuidos Definições Básicas Threads são sub-procesos no sistema operacional. É menos custoso gerenciar threads do que processos.
Leia maisThreads em Java. Java Threads. Java Componentes: JVM JVM:
Threads em Java (Aula 17) Java Threads Difícil de classificar com user thread ou kernel thread As threads Java são gerenciadas pela JVM. Threads em Java podem ser criadas das seguintes maneiras: Fazendo
Leia maisConcorrência em Java. Threads em Java
Concorrência em Java Threads em Java 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
Leia maisThreads. Linguagem Java. Adenilso da Silva Simão 17/05/05
17/05/05 Uma thread é uma linha de execução dentro de um programa Conceito de SO Java implementa suporte nativo a threads Duas formas de se implementar Implementando a interface Runnable Deve-se sobrepor
Leia maisExecução concorrente em Java: threads. O que são Threads? Criação e métodos de Threads Sincronização Comunicação entre Threads
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:
Leia maisPROGRAMAÇÃO ORIENTADA A OBJETOS. Aula 12 - Threads e Concorrência em Java
Aula 12 - Threads e Concorrência em Java Conteúdo Programático desta aula Aplicar os conceitos e threads, processos concorrentes e sincronização em pequenos programas. Aplicar e verificar os conceitos
Leia maisSistemas Operacionais
Sistemas Operacionais Aula 9 Threads Prof.: Edilberto M. Silva http://www.edilms.eti.br Baseado no material disponibilizado por: SO - Prof. Edilberto Silva Prof. José Juan Espantoso Threads Uma thread
Leia maisProgramação Concorrente em Java
Programação Concorrente em Java Prof. Orlando Loques - IC/UFF versão 17-04-2001 Referências: - Programação Concorrente em Java, Sérgio Teixeira de Carvalho & Leonardo N. M. Reis IC-UFF - Ousterhout, J.:
Leia maisThreads. Leonardo Gresta Paulino Murta
Threads Leonardo Gresta Paulino Murta leomurta@ic.uff.br Aula de hoje Estudaremos a execução em paralelo de programas em Java por meio de Threads Leonardo Murta Threads 2 Por que usar Threads? Threads
Leia maisTratamento de Exceções, Multithreads e arquivos (em Java) Programação Orientada a Objetos
Tratamento de Exceções, Multithreads e arquivos (em Java) Programação Orientada a Objetos Nesta unidade vamos ver os últimos assuntos de interesse em java. O primeiro deles, bem simples, é o tratamento
Leia maisMúltiplas Linhas de Execução Java (Threads)
Múltiplas Linhas de Execução Java (Threads) SCC0604 - Programação Orientada a Objetos Prof. Fernando V. Paulovich http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de Ciências Matemáticas
Leia maisProgramação Orientada a Objetos (DPADF 0063)
Programação Orientada a Objetos (DPADF 0063) Aula 10 Threads Universidade Federal de Santa Maria Colégio Agrícola de Frederico Westphalen Curso Superior de Tecnologia em Sistemas para Internet Prof. Bruno
Leia maisProgramação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos
Programação Orientada a Objetos Vagner Luz do Carmo - Vluzrmos Questão 1 Dada a seguinte classe na linguagem JAVA: public class Carro { public String retornacor(){ ; return Azul ; private String retornachassi(){
Leia maisTHREADS EM JAVA. George Gomes Cabral
THREADS EM JAVA George Gomes Cabral THREADS Fluxo seqüencial de controle dentro de um processo. Suporte a múltiplas linhas de execução permite que múltiplos processamentos ocorram em "paralelo" (em computadores
Leia maisLinguagem de Programação II Implementação
Linguagem de Programação II Implementação Prof. Alessandro Borges 2 Tópicos Implementação em Java Variáveis Palavras reservadas Pacotes Identificador this Acessando membros de outros objetos API Java Nossa
Leia maisPUC-SP Depto. de Ciência da Computação
Mensagens Concorrentes Prof. Dr. Italo Santiago Vega Julho de 2000 PUC-SP Depto. de Ciência da Computação www.pucsp.br/~italo Introdução Concorrência libera a modelagem de interações entre objetos tradicionalmente
Leia maisProgramação concorrente em Java
Programação concorrente em Java Paulo Sérgio Almeida Grupo de Sistemas Distribuídos Departamento de Informática Universidade do Minho 2007/2008 c 2000 2007 Paulo Sérgio Almeida Programação concorrente
Leia maisJAVA. Professor: Bruno Toledo
JAVA Professor: Bruno Toledo Funcionamento de uma LP Em uma Linguagem de Programação (LP) como C e Pascal, temos o seguinte quadro quando vamos compilar um programa. Código fonte em c Teste.c Gera código
Leia maisLinguagem de Programação III
Linguagem de Programação III Aula-7 Reutilização de Classes Prof. Esbel Tomás Valero Orellana Até Aqui Introdução a POO e sua implementação em Java Atributos, métodos e encapsulamento dos mesmos Trabalhando
Leia mais[Magee 1999] Concurrency State Models and Java Programs, Jeff Magee, Jeff Kramer, John Wiley 1999.
Programação Concorrente [Magee 1999] Concurrency State Models and Java Programs, Jeff Magee, Jeff Kramer, John Wiley 1999. [Gosling] The Java Language Specification James Gosling, Bill Joy and Guy Steele,
Leia maisThreads e Concorrência em Java (Material de Apoio)
Introdução Threads e Concorrência em Java (Material de Apoio) Professor Lau Cheuk Lung http//www.inf.ufsc.br/~lau.lung INE-CTC-UFSC A maioria dos programas são escritos de modo seqüencial com um ponto
Leia maisProgramação Estruturada e Orientada a Objetos
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE Programação Estruturada e Orientada a Objetos Docente: Éberton da Silva Marinho e-mail: ebertonsm@gmail.com eberton.marinho@ifrn.edu.br
Leia maisFundamentos Básicos da linguagem Java (Programação Orientada a Objetos) Prof. Responsáveis Wagner Santos C. de Jesus
Curso Disciplina Linguagem de Programação II Curso Engenharia da Computação Fundamentos Básicos da linguagem Java (Programação Orientada a Objetos) Site : http://www1.univap.br/~wagner/ec.html Prof. Responsáveis
Leia maisParadigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura
Java First-Tier: Aplicações Orientação a Objetos em Java (I) Paradigmas de Programação Programação Funcional Programação Procedural Programação Orientada por Objetos Grupo de Linguagens de Programação
Leia maisPalavras Reservadas da Linguagem Java
Palavras Reservadas da Linguagem Java Palavras Reservadas da Linguagem Java: Categorias Tipos de dados primitivos Literais Pseudo-variáveis Desvio e controle de fluxo Pacotes Exceções Modificadores de
Leia maisLinguagem de Programação II Implementação
Linguagem de Programação II Implementação Prof. Alessandro Borges 2 Tópicos Criando objeto Definindo valores para os atributos do objeto Método construtor Definindo valores padrão para os atributos dos
Leia mais[Magee 1999] Concurrency State Models and Java Programs, Jeff Magee, Jeff Kramer, John Wiley 1999.
Cap. IV - Programação Concorrente [Magee 1999] Concurrency State Models and Java Programs, Jeff Magee, Jeff Kramer, John Wiley 1999. [Gosling] The Java Language Specification James Gosling, Bill Joy and
Leia maisPROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS Docente: Éberton da Silva Marinho e-mail: ebertonsm@gmail.com eberton.marinho@ifrn.edu.br
Leia maisAula 08 Estruturas de Condição. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes
Aula 08 Estruturas de Condição Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes http://www.profbrunogomes.com.br/ Agenda da Aula Entrada de Dados; Estruturas de Controle: Estrutura de Sequência;
Leia maisRecapitulando. Construtores: (Overload assinatura) public Circle() {...} public Circle(double x, double y, double r) {... }
Recapitulando Orientação a objetos: programas organizados em torno da definição de classes, instanciação de objetos e troca de mensagens. Declaração de variáveis de referencia: Circle c; Criação/instanciação
Leia maisProgramação Orientada a Objetos SANTOS, Rafael (PLT)
Programação Orientada a Objetos SANTOS, Rafael (PLT) Possibilita atribuições em sequência na mesma instrução Retorna o valor atribuído Atribuições compostas: incluem a própria variável: +=, *=, -=, etc
Leia maisENTENDENDO O FRAMEWORK FORK/JOIN DE JAVA
ENTENDENDO O FRAMEWORK FORK/JOIN DE JAVA Como funciona o Java Framework Fork /Join? Paralelismo é a execução simultânea de duas ou mais tarefas. Para nossos propósitos, basta entender que, em alguns problemas,
Leia mais[Magee 1999] Concurrency State Models and Java Programs, Jeff Magee, Jeff Kramer, John Wiley 1999.
Cap. IV - Programação Concorrente [Magee 1999] Concurrency State Models and Java Programs, Jeff Magee, Jeff Kramer, John Wiley 1999. [Gosling] The Java Language Specification James Gosling, Bill Joy and
Leia maisLinguagem de Programação III
Linguagem de Programação III Aula-5 Estruturas de Decisão e Controle. Arrays em Java Prof. Esbel Tomás Valero Orellana Até Aqui Modelos e POO Classes e sua implementação em Java Encapsulamento Tipos de
Leia maisProgramação. Orientada a Objetos: Herança. Objetos. Relacionamento entre classes. Análise e Projeto Orientados a. Objetos
Programação Orientada a Objetos: Herança Alexandre César Muniz de Oliveira Análise e Projeto Orientados a Objetos A análise orientada a objetos Determina o que o sistema deve fazer: Quais os atores envolvidos?
Leia maisInterfaces. Universidade Católica de Pernambuco Ciência da Computação. Prof. Márcio Bueno.
Interfaces Universidade Católica de Pernambuco Ciência da Computação Prof. Márcio Bueno poonoite@marciobueno.com Fonte: Material da Profª Karina Oliveira Interfaces É utilizada para agrupar conceitos em
Leia maisAULA 06: PROGRAMAÇÃO EM MÁQUINAS PARALELAS
ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES II AULA 06: PROGRAMAÇÃO EM MÁQUINAS PARALELAS Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação PROGRAMAÇÃO PARALELA
Leia maisUNIVERSIDADE FEDERAL DE MATO GROSSO DO SUL SISTEMAS DE INFORMAÇÃO - CÂMPUS DE COXIM FUNDAMENTOS EM ORIENTAÇÃO A OBJETOS
Data final de entrega 16/09/2014, até às 23h59min Enviar o arquivo de respostas em formato PDF e o arquivozip com códigos fontes para o e-mail motafernandomaia@gmailcom, insira no assunto do e-mail [Lista
Leia maisPolimorfismo. O que é polimorfismo?
O que é polimorfismo? Polimorfismo Significa que variáveis podem referenciar mais do que um tipo. Não é um conceito novo e várias linguagens de programação aplicam. Funções são polimórficas quando seus
Leia maisProgramação Orientada a Objectos - P. Prata, P. Fazendeiro
Quando um programa viola as restrições semânticas da linguagem, a JVM assinala um erro ao programa, sob a forma de exceção. Uma exceção é um erro recuperável O controlo da execução do programa é transferido
Leia maisClasses e Objetos. Sintaxe de classe em Java
Classes e Objetos Classes e Objetos A Programação Orientada a Objetos (POO) é uma técnica de programação que se baseia na construção de classes e utilização de objetos. Os objetos são formados por dados
Leia maisSó podem ser executados por uma Thread que detenha o lock do objecto
Transferência de controle entre Threads Os métodos wait(), notify() notifyall(), da classe Object, Permitem a transferência de controlo de uma Thread para outra. Só podem ser executados por uma Thread
Leia maisNum programa em JAVA é possível definir diferentes sequências de execução independente: Threads.
Threads Folha 5-1 Num programa em JAVA é possível definir diferentes sequências de execução independente: Threads. Uma Thread é similar a um processo no sentido em que corresponde a um conjunto de instruções
Leia maisLista 05 Herança. public class PessoaFisica extends Pessoa { private String RG; public PessoaFisica(){ super(); } public String getrg(){ return RG; }
Lista 05 Herança 1. Analisando a classe Java abaixo podemos observar que a mesma possui apenas um atributo, um construtor e dois métodos. Perceba que dentro do método main estão sendo invocados métodos
Leia maisQuando um programa viola as restrições semânticas da linguagem, a JVM assinala um erro ao programa, sob a forma de exceção.
6 Exceções Quando um programa viola as restrições semânticas da linguagem, a JVM assinala um erro ao programa, sob a forma de exceção. Uma exceção é um erro recuperável - O controlo da execução do programa
Leia maisRESULUÇÃO DOS EXERCÍCIOS E INSTRUÇÕES DE DECISÃO (if{} e else{}) Profº André Aparecido da Silva Disponível em:
RESULUÇÃO DOS EXERCÍCIOS E INSTRUÇÕES DE DECISÃO (if{} e else{}) Profº André Aparecido da Silva Disponível em: http://www.oxnar.com.br/aulas/java ATIVIDADE ELABORAR O PROGRAMA DE CÁLCULOS DE ÁREAS USANDO
Leia maisUniversidade da Beira Interior. Sistemas Distribuídos. Folha 4-1. Threads Daemon Threads
Threads Daemon Threads Folha 4-1 Uma Thread Daemon é uma Thread, geralmente usada para executar serviços em background, que tem a particularidade de terminar automaticamente após todas as Threads não Daemon
Leia maisProcessos. Conceitos Básicos
Processos Conceitos Básicos Processo Abstração usada pelo S.O. para designar a execução de um programa. (1) É caracterizado por uma thread de execução, um estado corrente e um conjunto associado de recursos
Leia maisHerança. Universidade Católica de Pernambuco Ciência da Computação. Prof. Márcio Bueno.
Universidade Católica de Pernambuco Ciência da Computação Prof. Márcio Bueno poonoite@marciobueno.com Fonte: Material da Profª Karina Oliveira Possibilita o reuso de classes (código-fonte) Usar quando:
Leia maisDesenvolvendo aplicações Java
José Roberto Madureira Junior Adaní Cusin Sacilotti Adriana Rodrigues Reginaldo Sacilotti Desenvolvendo aplicações Java Primeira Edição São Paulo 2017 Sumário 1 INTRODUÇÃO AO JAVA... 1 1.1 A PLATAFORMA
Leia maisConcorrência em Processos
Concorrência em Processos Anderson L. S. Moreira anderson.moreira@recife.ifpe.edu.br http://dase.ifpe.edu.br/~alsm Baseado nas aulas do professor Alberto Costa Neto da UFS 1 O que fazer com essa apresentação
Leia maisESQUEMA AULA PRÁTICA 0 Familiarização com o Ambiente de Desenvolvimento NetBeans Construção do primeiro programa em java.
P. Fazendeiro & P. Prata POO FP0/1 ESQUEMA AULA PRÁTICA 0 Familiarização com o Ambiente de Desenvolvimento NetBeans Construção do primeiro programa em java. 0 Iniciar o ambiente de desenvolvimento integrado
Leia maisProgramação Orientada a Objectos - P. Prata, P. Fazendeiro
6 Exceções Quando um programa viola as restrições semânticas da linguagem, a JVM assinala um erro ao programa, sob a forma de exceção. Uma exceção é um erro recuperável O controlo da execução do programa
Leia maisUtilizando Threads em Java
Utilizando Threads em Java CCComp - DCE - UESB Resumo sobre os threads em Java Estrutura Geral das Implementações CCComp - DCE - UESB class ProcessoA extends Thread {... }//fim da classe ProcessoA class
Leia maisDEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO SISTEMAS OPERACIONAIS I SEM/12 PROVA I. Tempo de Prova: 100 minutos / Escore Máximo: 300 pontos
DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO SISTEMAS OPERACIONAIS I - 1 0 SEM/12 PROVA I Tempo de Prova: 100 minutos / Escore Máximo: 300 pontos Aluno: G A B A R I T O Escore: Responda às perguntas de forma
Leia maisUNIVERSIDADE ESTADUAL VALE DO ACARAÚ- UEVA. Assunto: Programação Concorrente.
UNIVERSIDADE ESTADUAL VALE DO ACARAÚ- UEVA Assunto: Programação Concorrente. Alunos: Valdeclébio Farrapo Costa Paulo Roberto Gabriel Barbosa Curso: Ciência da Computação Disciplina: Linguagem de Programação
Leia maisMultithreading. Programação Orientada por Objectos com Java. Ademar Aguiar. MRSC - Programação em Comunicações
Programação Orientada por Objectos com Java www.fe.up.pt/~aaguiar ademar.aguiar@fe.up.pt 1 Multithreading 154 Objectivos Ser capaz de: Explicar os conceitos básicos de multithreading Criar threads múltiplos
Leia maisLinguagem de Programação IV Introdução
Linguagem de Programação IV Introdução Prof. Alessandro Borges 2 Tópicos Orientação a objetos Classe Objeto Abstração Encapsulamento Herança Polimorfismo Plataforma Java 3 4 POO é um paradigma de programação
Leia maisLinguagens de Programação Classificação
Classificação Classificação A proximidade que a linguagem de programação tem com a humana determina sua classe (o nível): Linguagem de máquina (primeira geração) Linguagem assembly - de montagem (segunda
Leia maisInstituto Superior de Engenharia de Lisboa
Instituto Superior de Engenharia de Lisboa Introdução à Programação (PG) Docente: Pedro Viçoso Fazenda (pfazenda@cedet.isel.ipl.pt) Professor Responsável: Pedro Alexandre Pereira (palex@cc.isel.ipl.pt)
Leia maisLICENCIATURA EM COMPUTAÇÃO. Resenha Livro Sistemas Operacionais 4ª edição Capítulo quatro: Gerencia do processador
LICENCIATURA EM COMPUTAÇÃO Resenha Livro Sistemas Operacionais 4ª edição Capítulo quatro: Gerencia do processador SANTO AMARO 2012 JEANDERVAL SANTOS DO CARMO RESENHA Resenha do quarto capítulo: Gerencia
Leia maisTratamento de Exceções
Tratamento de Exceções Universidade Católica de Pernambuco Ciência da Computação Prof. Márcio Bueno poonoite@marciobueno.com Fonte: Material da Profª Karina Oliveira Introdução Exceções São eventos que
Leia maisAlgoritmos I Aula 13 Linguagem de Programação Java
Algoritmos I Aula 13 Linguagem de Programação Java Professor: Max Pereira http://paginas.unisul.br/max.pereira Ciência da Computação IDE Eclipse IDE (Integrated development environment) Criar um projeto
Leia maisProgramação Orientada a Objetos. Professor: André Luis Meneses Silva br.geocities.com/programacao2ufs
Programação Orientada a Objetos Professor: André Luis Meneses Silva andreluis.ms@gmail.com br.geocities.com/programacao2ufs [ Conteúdo ] Objeto Mensagens Classe Encapsulamento Visibilidade Membros de Instância
Leia maisProcessos. Processo (1) Processo (2) Processo (3) Conceitos Básicos
Processos Conceitos Básicos Processo (1) Abstração usada pelo S.O. para designar a execução de um programa. É caracterizado por uma thread de execução, um estado corrente e um conjunto associado de recursos
Leia maisProcessos. Conceitos Básicos
Processos Conceitos Básicos Processo (1) Abstração usada pelo S.O. para designar a execução de um programa. É caracterizado por uma thread de execução, um estado corrente e um conjunto associado de recursos
Leia maisComputação II Orientação a Objetos
Computação II Orientação a Objetos Fabio Mascarenhas - 2016.2 http://www.dcc.ufrj.br/~fabiom/java Classes abstratas Até agora, usamos interfaces toda vez que queríamos representar algum conceito abstrato
Leia maisRafael B. Pereira (http://www.rbper.com)
Simulados A segunda parte desse livro é dedicada aos simulados dos concursos. São sete provas que reúnem questões de diversos concursos, e combinam os assuntos apresentados até então nos 10 capítulos do
Leia maisNotas de Aula 09: Tratamento de exceções
Notas de Aula 09: Tratamento de exceções Objetivos da aula: Compreender o conceito de exceção Aprender a tratar exceções nos programas Entender a hierarquia das exceções Criar e lançar uma exceção proprietária
Leia maisIntrodução OpenMP. Nielsen Castelo Damasceno
Introdução OpenMP Nielsen Castelo Damasceno Computação de auto desempenho Processamento Paralelo Memória Distribuída e Compartilhada Modelo de programação OpenMP Métricas de Desempenho Computação de auto
Leia maisCompilação dos trabalhos: questões de concurso
1 Compilação dos trabalhos: questões de concurso UFBA/DCC/Linguagens para Aplicação Comercial/2009.1 MPU/2007 (Equipe 1) 1 Quanto às variáveis Java, um inteiro de 64 bits em notação de complemento de dois
Leia mais(Aula 17) Threads em Java
(Aula 17) Threads em Java Difícil As Threads thread threads de emjava classificar sãogerenciadaspelajvm. podemser com user criadasdas thread ou kernel Profa. Patrícia A seguintesmaneiras: Fazendo extend
Leia maisProcessos. Conceitos Básicos
Processos Conceitos Básicos Processo (1) Abstração usada pelo S.O. para designar a execução de um programa. É caracterizado por uma thread de execução, um estado corrente e um conjunto associado de recursos
Leia maisCONCEITOS BÁSICOS DE ORIENTAÇÃO A OBJETOS PROF. ME. HÉLIO ESPERIDIÃO
CONCEITOS BÁSICOS DE ORIENTAÇÃO A OBJETOS PROF. ME. HÉLIO ESPERIDIÃO CLASSES E OBJETOS PARA PROGRAMAÇÃO ORIENTADA A OBJETOS Classes são estruturas das linguagens de POO criadas para conter os dados que
Leia mais1 - O que será impresso quando o seguinte programa escrito na linguagem JAVA for compilado e executado?
1 - O que será impresso quando o seguinte programa escrito na int i; do i++; while(i < 0); System.out.println(i); a) O programa não compila pois a variável i não foi inicializada. b) O programa compila,
Leia maisSistemas Distribuídos Aula 3
Sistemas Distribuídos Aula 3 Aula passada Processos IPC Características Ex. sinais, pipes, sockets Aula de hoje Threads Kernel level User level Escalonamento Motivação: Servidor Web Considere Servidor
Leia maisJava Threads. Introdução
Java Threads mleal@inf.puc-rio.br 1 Introdução O único mecanismo de concorrência suportado explicitamente pela linguagem Java é multi-threading. threading. Os mecanismos de gerenciamento e sicronização
Leia maisIntrodução ao Java. Prof. Herbert Rausch Fernandes
Introdução ao Java Prof. Herbert Rausch Fernandes Orientação a Objetos Programação Orientada por Objetos: é a construção de sistemas de software como uma coleção estruturada de implementações de tipos
Leia maisTipos, Literais, Operadores
Tipos, Literais, Operadores Identificadores São palavras utilizadas para nomear variáveis, métodos e classes Na linguagem Java, o identificador sempre começa por letra, sublinhado(_) ou cifrão ($) Não
Leia maisTipos, Literais, Operadores
Tipos, Literais, Operadores Identificadores São palavras utilizadas para nomear variáveis, métodos e classes Na linguagem Java, o identificador sempre começa por letra, sublinhado(_) ou cifrão ($) Não
Leia maisInterfaces e Classes Internas
e Classes Internas SCC0604 - Programação Orientada a Objetos Prof. Fernando V. Paulovich http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de Ciências Matemáticas e de Computação (ICMC) Universidade
Leia maisFundamentos de Sistemas Operacionais. Threads. Prof. Edwar Saliba Júnior Março de Unidade Threads
Threads Prof. Edwar Saliba Júnior Março de 2007 1 Definição Partes de um processo que compartilham mesmo espaço de endereçamento Sub-rotina de um programa executada paralelamente ao programa chamador (execução
Leia maisIntrodução a classes e objetos. Prof. Marcelo Roberto Zorzan
Introdução a classes e objetos Prof. Marcelo Roberto Zorzan Herança Aula de Hoje Problema Considere uma empresa que tenha tipos de empregados no aplicativo de folha de pagamento Um empregado tem nome,
Leia maisIntrodução à Programação de Computadores Parte I
Introdução à Programação de Computadores Parte I Prof. Dr. Edson Pimentel Centro de Matemática, Computação e Cognição Objetivos Compreender os componentes básicos de um programa... Objetivos Bacharelado
Leia maisSistemas Operacionais. Prof. Pedro Luís Antonelli Anhanguera Educacional
Sistemas Operacionais Prof. Pedro Luís Antonelli Anhanguera Educacional ARQUITETURA E IMPLEMENTAÇÃO Pacote de Threads Conjunto de rotinas disponíveis para que uma aplicação utilize as facilidades dos threads.
Leia maisINTRODUÇÃO À TECNOLOGIA DA INFORMAÇÃO PROCESSOS PROFESSOR CARLOS MUNIZ
INTRODUÇÃO À TECNOLOGIA DA PROFESSOR CARLOS MUNIZ O QUE SÃO? Definição: Entidade dinâmica que consiste num programa em execução, os seus valores correntes, informação de estado e recursos utilizados pelo
Leia maisUnidade 7: Documentação de Código A Importância dos Comentários Prof. Daniel Caetano
Linguagem de Programação 1 Unidade 7: Documentação de Código A Importância dos Comentários Prof. Daniel Caetano Objetivo: Desenvolver a habilidade de comentar código adequadamente INTRODUÇÃO Até o momento
Leia maisProgramação Java. Marco Fagundes. - Herança, Classes Abstratas e Interfaces Marco Fagundes -
Programação Java - Herança, Classes Abstratas e Interfaces - Marco Fagundes mfagundes@tre-pa.gov.br 1 Tópicos Herança Ligação Dinâmica Polimorfismo 2 Herança Herança é um conceito que mapeia as classes
Leia maisOrientação a Objetos e Java
Orientação a Objetos e Java Daves Martins davesmartins@yahoo.com.br Mestre em Computação de Alto Desempenho pela UFRJ Especialista em Banco de Dados Analista Web Orientação a Objetos e Java Características
Leia maisJava Standard Edition (JSE)
Java Standard Edition (JSE) 14.Threads Esp. Márcio Palheta Gtalk: marcio.palheta@gmail.com 1 Agenda Conceitos de programação concorrente Estendendo Thread; Troca de contextos; Garbage Collector; Problemas
Leia maisSistemas Operacionais I Parte VI Threads
Sistemas Operacionais I Parte VI Threads Roteiro Introdução Benefícios Ciclo de Vida Estados Modelos Multithreading Modelo Muitos para Um Modelo Um para Um Modelo Muitos para Muitos Sistemas com Threads
Leia maisLEIC-T LERC MEIC-T 2011/2012 1º Semestre Programação com Objetos 2012/01/07 11h00m 3/10
2/10 1.1. (1.5 val.) Os mecanismos de herança entre classes e de composição de objetos são, por vezes, apresentados como alternativos, face à disponibilização de funcionalidade a uma classe. Compare-os,
Leia maisNotas de Aula 01: Introdução à linguagem de programação Java e ao ambiente de desenvolvimento NetBeans
Notas de Aula 01: Introdução à linguagem de programação Java e ao ambiente de desenvolvimento NetBeans Objetivos da aula: Introduzir conceitos da linguagem Java Apresentar um histórico da linguagem Apresentar
Leia mais