Programação Concorrente em java - Exercícios Práticos Abril 2004
|
|
|
- Iago Borja Van Der Vinne
- 10 Há anos
- Visualizações:
Transcrição
1 Programação Concorrente em java - Exercícios Práticos Abril Introdução As threads correspondem a linhas de controlo independentes no âmbito de um mesmo processo. No caso da linguagem JAVA, é precisamente o conceito de thread que é utilizado como modelo para a programação concorrente, permitindo que uma aplicação em execução numa máquina virtual Java possa ter várias linhas de execução concorrentes em que cada uma corresponde a uma thread. Esta ficha explora a utilização de threads em JAVA, bem como, de uma forma geral, os conceitos básicos de programação concorrente em JAVA. Como referências de apoio à realização desta ficha deverão ser utilizados os seguintes recursos: Documentação do JDK em Tutorial de Java Threads em 2. Threads em Java O suporte para threads na linguagem JAVA é realizado através da classe java.lang.thread cujos métodos definem o API disponível para a gestão de threads. Entre as operações disponíveis incluem-se métodos para iniciar, executar, suspender e gerir a prioridade de uma thread. O código que define o que uma thread vai fazer é o que estiver no método run. A classe Thread é uma implementação genérica de uma thread com um método run vazio, cabendo ao programador definir esse código para uma thread em particular. O ciclo de vida de uma thread começa com a criação do respectivo objecto, continua com a execução do método run (iniciada através da invocação do método start), e irá terminar quando terminar a execução do método run. Figure 1 Ciclo de vida de uma thread Umas das técnicas para criar uma nova thread de execução numa aplicação JAVA é criar uma subclasse de Thread e re-escrever o método run. A nova classe deverá redefinir o método run da classe Thread de forma a corresponder ao código que se pretende que a nova thread execute.
2 Exemplo 1 class PrimeThread extends Thread { long minprime; PrimeThread(long minprime) { this.minprime = minprime; public void run() { // código a executar pela thread... A classe que pretendia criar a nova thread teria de executar o seguinte código: PrimeThread p = new PrimeThread(143); p.start(); A outra forma de criar uma Thread é declarar uma classe que implementa o interface Runnable e que implementa o método run. Exemplo 2 class PrimeRun implements Runnable { long minprime; PrimeRun(long minprime) { this.minprime = minprime; public void run() { // código a executar pela thread... A classe que pretendia criar a nova thread teria de executar o seguinte código: PrimeRun p = new PrimeRun(143); new Thread(p).start(); 3. Aplicações concorrentes em JAVA O cenário que serve de base para esta ficha prática é o de um depósito de caixas. Um produtor vai ao depósito armazenar as caixas que vai produzindo. Um consumidor vai ao depósito para levantar essas mesmas caixas. O programa apresentado em baixo corresponde ao código do Depósito, permitindo a retirada e a colocação de elementos através dos métodos retirar e colocar respectivamente.
3 Programa 1 (Deposito.java) public class Deposito { private int items=0; private final int capacidade=10; public int retirar() { if (items>0) { items--; System.out.println("Caixa retirada: Sobram "+items+" caixas"); return 1; return 0; public int colocar () { if (items<capacidade) { items++; System.out.println("Caixa armazenada: Passaram a ser "+items+" caixas"); return 1; return 0; public static void main(string[] args) { Deposito dep = new Deposito(); Produtor p = new Produtor(d, 2); Consumidor c = new Consumidor(d, 1); //arrancar o produtor //... //arrancar o consumidor //... System.out.println("Execucao do main da classe Deposito terminada"); T1 >> Caso ainda não esteja, configure o seu ambiente de trabalho de forma a poder utilizar as ferramenta do Java SDK. T2 >> Teste o ambiente de trabalho gerando o ficheiro Deposito.class e executando-o de seguida. T3 >> Crie uma classe Produtor que funcione como uma thread independente e que vai invocando o método colocar da classe depósito de forma a acrescentar caixas ao depósito. A classe Produtor deve receber no construtor uma referência para o objecto dep onde os métodos vão ser invocados e um inteiro correspondente ao tempo em segundos entre produções de caixas. Defina a classe Produtor como sendo uma classe que implementa o método Runnable. T4 >> Crie uma classe Consumidor que funcione como uma thread independente e que vai invocando o método retirar da classe depósito de forma a retirar caixas do depósito. A classe Consumidor deve receber no construtor uma referência para o objecto dep onde os métodos vão ser invocados e um inteiro correspondente ao tempo em segundos entre consumos de caixas. Defina a classe Consumidor como sendo uma sub-classe da classe Thread. T5 >> Indique que motivos poderão levar a que se opte por realizar uma thread através da
4 implementação do interface Runnable ou como sub-classe de Thread. T6 >> Ponha o sistema a funcionar e experimente algumas variantes, como por exemplo: Adicione à classe consumidor mensagens que permitam identificar o que cada objecto Consumidor está a fazer em cada momento, e em particular se está bloqueado à espera que existam caixas. Altere o número de consumidores ou de produtores e os tempos médios entre produções e consumos. T7 >> Usando tempos de consumo e produção adequados, bem como alguns métodos Thread.sleep tente forçar a ocorrência de race-conditions. 4. Sincronização de threads em JAVA A existência de Threads concorrentes levanta a necessidade de sincronização. Em JAVA, cada objecto tem associado um monitor através do qual é possível garantir o acesso exclusivo às secções críticas desse mesmo objecto. O controlo de acesso às secções críticas de um objecto é feito de forma automática pelo sistema de run-time do JAVA. O que o programador precisa de fazer é apenas assinalar as secções críticas usando para tal a primitiva synchronized. Um bloco de código sincronizado é uma região de código que apenas pode ser executado por uma thread de cada vez. Pode-se declarar um método como sendo synchronized: synchronized int pull () {... Ou pode-se declarar apenas uma parte de um método como sendo synchronized: synchronized (this) {... T8 >> Analise o código das classes do exercício anterior e identifique potenciais problemas de concorrência na actual implementação da classe Deposito. T9 >> Utilizando a primitiva synchronized, altere a implementação do sistema por forma a evitar a ocorrência de race-conditions Coordenação de threads em JAVA Para além de evitar race-conditions também é importante permitir a coordenação entre Threads. Em JAVA esta coordenação faz-se usando os seguintes métodos da classe Object: wait, notify, e notifyall. No seu conjunto estes métodos permitem às threads bloquear à espera de determinada condição ou notificar outras threads que se encontrem bloqueadas de que a condição pela qual estão à espera pode já se ter realizado. T10 >> Identifique as razões pelas quais a utilização da primitiva synchronized poderá não ser suficiente para garantir um funcionamento adequada deste sistema. T11 >> Consulte a informação referente aos seguintes métodos: wait, notify, e notifyall. T.12 >> Utilizando os métodos acima referido, altere a implementação do sistema por forma a permitir uma coordenação adequada entre os objectos. 5. Dependência de estado e guardas de métodos A invocação de um método num objecto pode depender de condições associadas ao estado desse objecto. As acções dependentes do estado são métodos cuja execução pode não ser possível num determinado momento mas cuja viabilidade futura depende de algum evento externo que poderá ocorrer a qualquer momento. O método retirar na classe Deposito é um
5 exemplo de um método cuja invocação vai depender do estado do objecto no qual é invocado. Quando um objecto Consumidor tenta retirar uma caixa do depósito mas não existem quaisquer caixas disponíveis o método não pode prosseguir imediatamente. Contudo, é possível que a qualquer momento um Produtor coloque no depósito uma nova caixa e então o método já possa ser invocado. Qual a atitude a tomar quando o método é invocado mas a pré-condição necessária à sua execução (por exemplo existirem caixas no depósito) não se verifica? Para decidir o que fazer nesses casos podem ser seguidas essencialmente duas abordagens: Uma abordagem optimista (liveness first) é assumir que mais tarde ou mais cedo a pré-condição há-de ser verdadeira e por isso espera-se. Uma abordagem conservadora (safety first) admite que a pré-condição pode nunca vir a ser verdadeira (pelo menos em tempo útil) e por isso se num determinado momento não é possível executar o método então mais vale devolver uma indicação de erro. Uma abordagem intermédia consiste em esperar mas definir um tempo limite. Estas várias abordagens correspondem então às seguintes políticas: Balking Caso a invocação do método não seja possível a sua execução é recusada Situações em que é mais indicado: Guarded Suspension(guarded waits) Execução é suspensa até que a précondição seja verdadeira. Implica que outras threads alterem o estado do objecto! Timed Waits Execução é suspensa até que a pré-condição seja verdadeira ou decorra um tempo máximo definido. Altere a classe Deposito por forma a suportar três implementações diferentes do método retirar, cada uma delas correspondendo a cada uma das três políticas apresentadas em cima. T.13 >> Implemente o método retirar_balking() que utiliza a estratégia de falhar em caso de impossibilidade de continuação. T.14 >> Implemente o método retirar_guarded_suspension() que utiliza a estratégia de bloquear até que seja possível continuar. T.15 >> Implemente o método retirar_timed_wait(long milliseconds) que utiliza a estratégia de bloquear até que seja possível continuar, mas que falha se ao fim do tempo indicado como parâmetro ainda não tiver sido possível continuar T.16 >> Acrescente ao construtor da classe Consumidor um argumento que indique qual dos métodos deverá ser utilizado pelo objecto. Ponha cada um dos três consumidores a utilizar um método diferente para aceder à classe Deposito e analise qual deles é mais bem sucedido. 6. Questões finais T.17 >> Algumas classes Java, como por exemplo a classe vector, dizem-se threadsafe ou synchronized. Descreva o significado disto e as implicações que isso tem para os programadores que pretendem usar essas classes. T.18 >> Imagine que se pretendia suportar em Java um mecanismo de semáforos. Como é que se poderia definir uma classe semáforo que fosse capaz de suportar a funcionalidade dos semáforos?
THREADS 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
Threads 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
Java Threads. Introdução
Java Threads [email protected] 1 Introdução O único mecanismo de concorrência suportado explicitamente pela linguagem Java é multi-threading. threading. Os mecanismos de gerenciamento e sicronização
(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
Multithreading. 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 [email protected] 1 Multithreading 154 Objectivos Ser capaz de: Explicar os conceitos básicos de multithreading Criar threads múltiplos
Universidade da Beira Interior. Sistemas Distribuídos
Folha 6-1 Sincronização de Threads A sincronização de Threads em Java é baseada no conceito do Monitor (de Hoare). Cada objecto Java tem associado um monitor (ou lock ) que pode ser activado se a palavra
Como foi exposto anteriormente, os processos podem ter mais de um fluxo de execução. Cada fluxo de execução é chamado de thread.
5 THREADS Como foi exposto anteriormente, os processos podem ter mais de um fluxo de execução. Cada fluxo de execução é chamado de thread. 5.1 VISÃO GERAL Uma definição mais abrangente para threads é considerá-lo
Programação Orientada a Objetos Threads
Threads Prof. Edwar Saliba Júnior Janeiro de 2013 1 Introdução Multithreading: fornece múltiplas threads de execução para a aplicação; permite que programas realizem tarefas concorrentemente; às vezes
Fundamentos de Programaçã. ção Concorrente
Java 2 Standard Edition Fundamentos de Programaçã ção Concorrente Helder da Rocha www.argonavis.com.br 1 Programação concorrente O objetivo deste módulo é oferecer uma introdução a Threads que permita
Programação Orientada a Objetos em Java. Threads Threads Threads. Threads
Universidade Federal do Amazonas Departamento de Ciência da Computação IEC481 Projeto de Programas Programação Orientada a Objetos em Java Threads Threads Threads Threads Professor: César Melo Slides baseados
Introdução a Java. Hélder Nunes
Introdução a Java Hélder Nunes 2 Exercício de Fixação Os 4 elementos básicos da OO são os objetos, as classes, os atributos e os métodos. A orientação a objetos consiste em considerar os sistemas computacionais
Orientação a Objetos
1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou
Threads em Java. Sistemas Operacionais - Laboratório Professor Machado
Threads em Java Sistemas Operacionais - Laboratório Professor Machado 1 Conceitos de Programação Concorrente Uma unidade concorrente é um componente de um programa que não exige a execução seqüencial,
Programação por Objectos. Java
Programação por Objectos Java Parte 2: Classes e objectos LEEC@IST Java 1/24 Classes (1) Sintaxe Qualif* class Ident [ extends IdentC] [ implements IdentI [,IdentI]* ] { [ Atributos Métodos ]* Qualif:
Programação por Objectos. Java
Programação por Objectos Java Parte 6: Herança e Polimorfismo LEEC@IST Java 1/52 Herança revisão A herança é um mecanismo em que a subclasse constitui uma especialização da superclasse. A superclasse pode
Java 2 Standard Edition Como criar classes e objetos
Java 2 Standard Edition Como criar classes e objetos Helder da Rocha www.argonavis.com.br 1 Assuntos abordados Este módulo explora detalhes da construção de classes e objetos Construtores Implicações da
Java Básico. Classes Abstratas, Exceções e Interfaces Prof. Fernando Vanini Ic-Unicamp
Java Básico Classes Abstratas, Exceções e Interfaces Prof. Fernando Vanini Ic-Unicamp Classes Abstratas construção de uma classe abstrata construção de classes derivadas Classes e Herança Uma classe define
Sistemas Operacionais
AULA 09 Sincronização de Processos - II Monitores Conforme comentamos, o uso equivocado dos semáforos pode levar a uma situação de deadlock, por isso devemos tomar cuidado ao programar utilizando este
Analisar os sistemas operacionais apresentados na figura e responder as questões abaixo: Identificar
Projeto Integrador Sistemas Operacionais Prof.ª Lucilia Ribeiro GTI 3 Noturno Grupo: Anderson Alves da Mota. André Luiz Silva. Misael bezerra dos santos. Sandro de almeida silva. Analisar os sistemas operacionais
Reuso com Herança a e Composiçã
Java 2 Standard Edition Reuso com Herança a e Composiçã ção Helder da Rocha www.argonavis.com.br 1 Como aumentar as chances de reuso Separar as partes que podem mudar das partes que não mudam. Exemplo:
Sincronização. Cooperação entre Processos
Sincronização Parte II Programação Concorrente Cooperação entre Processos Vários processos executam em conjunto uma ou mais tarefas, nas quais Competem por recursos Indicam uns aos outros a: Ausência/existência
Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery
Linguagem de Programação JAVA Técnico em Informática Professora Michelle Nery Agenda Regras paravariáveis Identificadores Válidos Convenção de Nomenclatura Palavras-chaves em Java Tipos de Variáveis em
Programação de Computadores - I. Profª Beatriz Profº Israel
Programação de Computadores - I Profª Beatriz Profº Israel As 52 Palavras Reservadas O que são palavras reservadas São palavras que já existem na linguagem Java, e tem sua função já definida. NÃO podem
Programação com Objectos Teste Teórico 04 de Janeiro de 2010, 09:00 (120 minutos)
LEIC-A LEIC-T LERC MEE MEIC-A 2009/2010 (1º Semestre) Teste Teórico (201001040900) 1/10 LEIC-A LEIC-T LERC MEE MEIC-A 2009/2010 (1º Semestre) Teste Teórico 04 de Janeiro de 2010, 09:00 (120 minutos) Nome:
Aula 30 - Sockets em Java
Aula 30 - Sockets em Java Sockets Sockets são estruturas que permitem que funções de software se interconectem. O conceito é o mesmo de um soquete (elétrico, telefônico, etc...), que serve para interconectar
Programação Concorrente em Java. Profa Andréa Schwertner Charão DLSC/CT/UFSM
Programação Concorrente em Java Profa Andréa Schwertner Charão DLSC/CT/UFSM O que é programação concorrente? Um programa, múltiplos fluxos de execução Quando usar programação concorrente? Desempenho Ex.:
Introdução a Threads Java
Introdução a Threads Java Prof. Gerson Geraldo Homrich Cavalheiro Universidade Federal de Pelotas Departamento de Informática Instituto de Física e Matemática Pelotas RS Brasil http://gersonc.anahy.org
Grupo I [4v] executaprograma();
Número: Nome: LEIC/LERC 2012/13-1º Exame de Sistemas Operativos 15/Janeiro/2013 Identifique todas as folhas. Responda no enunciado, apenas no espaço fornecido. Justifique todas as respostas. Duração: 2h30m
Orientação a Objetos
Orientação a Objetos 1. Sobrecarga (Overloading) Os clientes dos bancos costumam consultar periodicamente informações relativas às suas contas. Geralmente, essas informações são obtidas através de extratos.
(ou seja, boas praticas de programação orientada a objetos devem ser empregadas mesmo se não foram explicitamente solicitadas)
PC-2 / LP-2 2009/2 Lista 2 Prof. Alexandre Sztajnberg Em todos os exercícios a(o) aluna(o) deve, além de atender aos requisitos enunciados, utilizar os conceitos e características de orientação a objetos
Curso Adonai QUESTÕES Disciplina Linguagem JAVA
1) Qual será o valor da string c, caso o programa rode com a seguinte linha de comando? > java Teste um dois tres public class Teste { public static void main(string[] args) { String a = args[0]; String
Série de Problemas - Sincronização com Semáforos
Sistemas Operativos Série de Problemas - Sincronização com Semáforos Bibliografia essencial para a compreensão/realização da série: "Modern Operating Systems", Andrew S. Tanenbaum, Prentice Hall, Capítulo
Sistemas Operacionais
Sistemas Operacionais Gerência de processos Controle e descrição de processos Edson Moreno [email protected] http://www.inf.pucrs.br/~emoreno Sumário Representação e controle de processos pelo SO Estrutura
ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento NetBeans Introdução à Linguagem de Programação JAVA
P. Fazendeiro & P. Prata POO FP1/1 ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento NetBeans Introdução à Linguagem de Programação JAVA 0 Iniciar o ambiente de desenvolvimento integrado
Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi
5 Conclusão Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi permitir que scripts Lua instanciem e usem
Algoritmos e Programação II. Sobrecarga
Algoritmos e Programação II Baseado no Material do Prof. Júlio Machado Sobrecarga Em várias linguagens é comum encontrarmos rotinas que fazem basicamente a mesma coisa, porém, têm nomes distintos porque
Entendendo como funciona o NAT
Entendendo como funciona o NAT Vamos inicialmente entender exatamente qual a função do NAT e em que situações ele é indicado. O NAT surgiu como uma alternativa real para o problema de falta de endereços
ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento Eclipse Introdução à Linguagem de Programação JAVA
P. Fazendeiro & P. Prata POO FP1/1 ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento Eclipse Introdução à Linguagem de Programação JAVA 0 Inicie o ambiente de desenvolvimento integrado
Grupo I [7v] 1. [1,0] Apresente o conteúdo do IDL relativo a este programa. Assuma PROGRAM=62015 e VERSION=1.
Número: Nome: Página 1 de 6 LEIC/LETI, 2014/15, Repescagem do 1º Teste de Sistemas Distribuídos 30 de Junho de 2015 Responda no enunciado, apenas no espaço fornecido. Identifique todas as folhas. Duração:
Mecanismo de Threads em Java 2
Mecanismo de Threads em Java 2 Índice MULTITHREADING : Múltiplos processos. 3 Paulo Costa, n.º 1000334 Mecanismo de Threads Página 2 de 20 MULTITHREADING : Múltiplos Processos As Threads são convenientes
Computação Concorrente (MAB-117) Monitores
Computação Concorrente (MAB-117) Monitores Prof. Silvana Rossetto 1 Departamento de Ciência da Computação (DCC) Instituto de Matemática (IM) Universidade Federal do Rio de Janeiro (UFRJ) Maio de 2012 1.
Grupo I [4v] b. [0,6v] De que forma é que o escalonador do Linux tenta minimizar o impacto desta limitação?
Número: Nome: LEIC/LERC 2011/12-2º Exame de Sistemas Operativos 3/Fevereiro/2012 Responda no enunciado, apenas no espaço fornecido. Identifique todas as folhas. Duração: 2h30m Grupo I [4v] 1. [0,6v] A
Guia de Fatores de Qualidade de OO e Java
Qualiti Software Processes Guia de Fatores de Qualidade de OO e Java Versã o 1.0 Este documento só pode ser utilizado para fins educacionais, no Centro de Informática da Universidade Federal de Pernambuco.
Conceitos básicos de programação
O QUE É UM PROGRAMA? Para executar uma dada tarefa é geralmente necessário entender o sistema onde ela é realizada. Por exemplo, para fazer um bolo temos um sistema composto por: Ingredientes Cozinheiro
Múltiplos Estágios processo com três estágios Inquérito de Satisfação Fase II
O seguinte exercício contempla um processo com três estágios. Baseia-se no Inquérito de Satisfação Fase II, sendo, por isso, essencial compreender primeiro o problema antes de começar o tutorial. 1 1.
Manual técnico. v2.2 2015/10
Manual técnico v2.2 2015/10 Índice 1. INTRODUÇÃO... 3 2. DESCRIÇÃO... 3 3. INTEGRAÇÃO DO SISTEMA... 4 3.1 DESCRIÇÃO... 4 3.2 INTEGRAÇÃO... 5 3.2.1. Geração de referências... 5 getreferencemb...5 getreferencemb2...7
3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio
32 3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio Este capítulo apresenta o framework orientado a aspectos para monitoramento e análise de processos de negócio
Java : Comunicação Cliente-Servidor.
Java : Comunicação Cliente-Servidor. Objetivo: Capacitar o aluno a desenvolver uma aplicação servidora para múltiplos clientes. Apresentar as classes Socket e ServerSocket, classes de fluxo de dados, a
Universidade Federal da Paraíba
Universidade Federal da Paraíba Mestrado em Informática Fora de Sede Universidade Tiradentes Aracaju - Sergipe Disciplina Sistemas Operacionais Professor Jacques Philippe Sauvé Aluno José Maria Rodrigues
Java. Marcio de Carvalho Victorino www.dominandoti.eng.br
Java Marcio de Carvalho Victorino www.dominandoti.eng.br 3. Considere as instruções Java abaixo: int cont1 = 3; int cont2 = 2; int cont3 = 1; cont1 += cont3++; cont1 -= --cont2; cont3 = cont2++; Após a
1.6. Tratamento de Exceções
Paradigmas de Linguagens I 1 1.6. Tratamento de Exceções Uma exceção denota um comportamento anormal, indesejado, que ocorre raramente e requer alguma ação imediata em uma parte do programa [GHE 97, DER
Grupo I [6v] Considere o seguinte extracto de um programa de definição de uma calculadora apenas com a função soma de dois valores reais
Número: Nome: Página 1 de 5 LEIC/LERC 2012/13, Repescagem do 1º Teste de Sistemas Distribuídos, 25 de Junho de 2013 Responda no enunciado, apenas no espaço fornecido. Identifique todas as folhas. Duração:
EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS
Campus Cachoeiro de Itapemirim Curso Técnico em Informática Disciplina: Análise e Projeto de Sistemas Professor: Rafael Vargas Mesquita Este exercício deve ser manuscrito e entregue na próxima aula; Valor
Engenharia de Software Sistemas Distribuídos
Engenharia de Software Sistemas Distribuídos 2 o Semestre de 2009/2010 FEARSe Requisitos para a 1 a entrega 18 de Março de 2010 1 Introdução O projecto conjunto das disciplinas de Engenharia de Software
Num sistema de objectos distribuídos, dois conceitos são fundamentais.
Folha 10-1 Java RMI - Remote Method Invocation No modelo de programação orientada a objectos, vimos que um programa consiste numa colecção de objectos que comunicam entre si através da invocação dos seus
A ) O cliente terá que implementar uma interface remota. . Definir a interface remota com os métodos que poderão ser acedidos remotamente
Java RMI - Remote Method Invocation Callbacks Folha 9-1 Vimos, na folha prática anterior, um exemplo muito simples de uma aplicação cliente/ servidor em que o cliente acede à referência remota de um objecto
Disciplina de Sistemas Distribuídos. Sincronização em SD. Prof. M.Sc. Alessandro Kraemer [email protected]. Kraemer
Disciplina de Sistemas Distribuídos Sincronização em SD Prof. M.Sc. Alessandro [email protected] Cronograma Contextualização Tipos de sincronização Mecanismos para sincronização da região crítica Exclusão
Programação Orientada a Objetos em java. Polimorfismo
Programação Orientada a Objetos em java Polimorfismo Polimorfismo Uma característica muito importante em sistemas orientados a objetos Termo proveniente do grego, e significa muitas formas Em POO, significa
Threads e Sockets em Java. Threads em Java. Programas e Processos
Threads em Java Programas e Processos Um programa é um conceito estático, isto é, um programa é um arquivo em disco que contém um código executável por uma CPU. Quando este programa é executado dizemos
Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática
Folha 1-1 Introdução à Linguagem de Programação JAVA 1 Usando o editor do ambiente de desenvolvimento JBUILDER pretende-se construir e executar o programa abaixo. class Primeiro { public static void main(string[]
Udesc/Ceplan Bacharelado em Sistemas de Informação Sistemas Operacionais. Prof. Alexandre Veloso [email protected]
Programação Concorrente [Parte 2] Udesc/Ceplan Bacharelado em Sistemas de Informação Sistemas Operacionais Prof. Alexandre Veloso [email protected] Condição de Corrida Uma forma de um processo comunicar-se
Sistemas Paralelos e Distribuídos - 2003/2004 Curso: Matemática /Informática Sistemas Distribuídos - 2003/2004 Curso: Ensino da Informática
Java RMI - Remote Method Invocation Folha 5-1 No modelo de programação orientada a objectos, vimos que um programa consiste numa colecção de objectos que comunicam entre si através da invocação dos seus
SISTEMAS OPERACIONAIS
SISTEMAS OPERACIONAIS Sincronização entre Processos Andreza Leite [email protected] Sincronização Freqüentemente, os processos precisam se comunicar com outros processos. Isto ocorre quando
UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA INFORMÁTICA APLICADA
Responda 1) Quem desenvolveu a linguagem C? Quando? 2) Existe alguma norma sobre a sintaxe da linguagem C? 3) Quais são os tipos básicos de dados disponíveis na linguagem C? 4) Quais são as principais
Começo por apresentar uma breve definição para projecto e para gestão de projectos respectivamente.
The role of Project management in achieving Project success Ao longo da desta reflexão vou abordar os seguintes tema: Definir projectos, gestão de projectos e distingui-los. Os objectivos da gestão de
Acronis Servidor de Licença. Manual do Utilizador
Acronis Servidor de Licença Manual do Utilizador ÍNDICE 1. INTRODUÇÃO... 3 1.1 Descrição geral... 3 1.2 Política de licenças... 3 2. SISTEMAS OPERATIVOS SUPORTADOS... 4 3. INSTALAR O SERVIDOR DE LICENÇA
RevISTa: Publicação técnico-científica do IST-Rio. nº 05 Data: Dezembro / 2012 ISSN 2178-5589.
Tutorial de Instalação e Uso do Eclipse Alexandre V. S. Lage, Caio de O. Leal, Eduardo A. F. da Silva, Felipe C. C. Trindade, Gutierre da C. Oliveira e Miguel G. P. de Carvalho. INTRODUÇÃO O Eclipse (2012)
Redes de Acesso Telefone VoIP WiFi baseado em Windows Mobile
Telefone VoIP WiFi baseado em Windows Mobile Trabalho realizado pelos alunos: Grupo 17 Índice A Introdução...3 B Objectivos...3 C Especificações, Desenvolvimento e Testes...3 C.1 Especificações...3 C.2
4 Um Exemplo de Implementação
4 Um Exemplo de Implementação Neste capítulo será discutida uma implementação baseada na arquitetura proposta. Para tanto, será explicado como a arquitetura proposta se casa com as necessidades da aplicação
PROGRAMAÇÃO ORIENTADA A OBJETOS -TRATAMENTO DE EXCEÇÕES. Prof. Angelo Augusto Frozza, M.Sc. [email protected]
PROGRAMAÇÃO ORIENTADA A OBJETOS -TRATAMENTO DE EXCEÇÕES Prof. Angelo Augusto Frozza, M.Sc. [email protected] ROTEIRO 5. Tratamento de Exceções Introdução e conceitos Capturando exceção usando
Como elaborar um Plano de Negócios de Sucesso
Como elaborar um Plano de Negócios de Sucesso Pedro João 28 de Abril 2011 Fundação António Cupertino de Miranda Introdução ao Plano de Negócios Modelo de Negócio Análise Financeira Estrutura do Plano de
Diagrama de transição de Estados (DTE)
Diagrama de transição de Estados (DTE) O DTE é uma ferramenta de modelação poderosa para descrever o comportamento do sistema dependente do tempo. A necessidade de uma ferramenta deste tipo surgiu das
Projeto de Software Orientado a Objeto
Projeto de Software Orientado a Objeto Ciclo de Vida de Produto de Software (PLC) Analisando um problema e modelando uma solução Prof. Gilberto B. Oliveira Estágios do Ciclo de Vida de Produto de Software
Exercício 1 : As classes abaixo serão utilizadas neste exercício: public class Ponto { int x; int y; public Ponto(int x, int y){ this.
Exercício 1 : As classes abaixo serão utilizadas neste exercício: public class Ponto { int x; int y; public Ponto(int x, int y){ this.x = x; this.y = y; public String tostring(){ return "(" + x + "," +
Exercícios de Revisão Java Básico
Exercícios de Revisão Java Básico (i) Programação básica (estruturada) 1) Faça um programa para calcular o valor das seguintes expressões: S 1 = 1 1 3 2 5 3 7 99... 4 50 S 2 = 21 50 22 49 23 48...250 1
Paradigmas da Programação PPROG. Linguagem JAVA. Interfaces. (Livro Big Java, Late Objects Capítulo 9) Nelson Freire (ISEP DEI-PPROG 2013/14) 1/33
PPROG Paradigmas da Programação Linguagem JAVA Interfaces (Livro Big Java, Late Objects Capítulo 9) Nelson Freire (ISEP DEI-PPROG 2013/14) 1/33 PPROG Motivação para usar Interfaces Definição de Interface
Lista de Contas: Assinatura. Lista de Contas. Listas de Contas: Descrição. Listas de Contas: Descrição. Listas de Contas: Descrição
Lista de Contas Lista de Contas: Assinatura null Quais são os métodos necessários? class ListaDeContas { void inserir (Conta c) { void retirar (Conta c) { Conta procurar (String num) { Listas de Contas:
A Gestão, os Sistemas de Informação e a Informação nas Organizações
Introdução: Os Sistemas de Informação (SI) enquanto assunto de gestão têm cerca de 30 anos de idade e a sua evolução ao longo destes últimos anos tem sido tão dramática como irregular. A importância dos
Modelo Cascata ou Clássico
Modelo Cascata ou Clássico INTRODUÇÃO O modelo clássico ou cascata, que também é conhecido por abordagem top-down, foi proposto por Royce em 1970. Até meados da década de 1980 foi o único modelo com aceitação
Iniciar o Data Adapter Configuration Wizard. Toolbox Data Duplo clique em OleDbDataAdapter. Botão next na caixa de diálogo
Iniciar o Data Adapter Configuration Wizard Toolbox Data Duplo clique em OleDbDataAdapter Botão next na caixa de diálogo Se carregar em Cancel, o wizard é cancelado e podemos depois definir as propriedades
5 Caso de estudo O cartão fidelidade
5 Caso de estudo O cartão fidelidade Cartão de fidelização de clientes das distribuidoras de combustível. Definição em JAVA da classe CartaoFidelidade, que deverá apresentar uma funcionalidade semelhante
(Aula 15) Threads e Threads em Java
(Aula 15) Threads e Threads em Java Um fluxo computacional. A programa maioria de execução, dos seqüencial programas o qual simples consiste realiza tem uma de essa um certa único tarefa Grande característica:
Análises Geração RI (representação intermediária) Código Intermediário
Front-end Análises Geração RI (representação intermediária) Código Intermediário Back-End Geração de código de máquina Sistema Operacional? Conjunto de Instruções do processador? Ambiente de Execução O
Programação online em Java
Universidade Federal do ABC Disciplina: Processamento da Informação Assunto: Programação online em Java Programação online em Java Conteúdo Conteúdo...1 Introdução... 1 1.1.Programas necessários... 1 1.2.Visão
Introdução à Linguagem Java
Introdução à Linguagem Java Histórico: Início da década de 90. Pequeno grupo de projetos da Sun Microsystems, denominado Green. Criar uma nova geração de computadores portáveis, capazes de se comunicar
Grupo I [6,6v] Responda com os valores que se observam depois da chamada acontecer. 1 Falta na mensagem de resposta. Valor retornado na chamada
Número: Nome: Pági 1 de 6 LEIC/LETI 2013/14, Repescagem do 1º Teste de Sistemas Distribuídos, 1/7/14 Responda no enunciado, apes no espaço fornecido. Identifique todas as folhas. Duração: 1h30m Grupo I
Sistemas Distribuídos
Sistemas Distribuídos Processos e Threads Gustavo Reis [email protected] - O que são Processos? Uma abstração de um programa em execução. Mantêm a capacidade de operações (pseudo)concorrentes,
Módulo 07 Características Avançadas de Classes
Módulo 07 Características Avançadas de Classes Última Atualização: 15/06/2010 1 Objetivos Descrever variáveis, métodos e iniciadores static Descrever a semântica do modificador final em classes, métodos
Capítulo 4. Packages e interfaces
Capítulo 4. Packages e interfaces 1/17 Índice Indice 4.1 - Package 4.2 - Interface 2/17 Índice 4.1 Package 4.1 - Package 4.2 -- Interface 3/17 4.1 Package Package ou pacote está para o Java como as directorias
Faculdades Santa Cruz - Inove. Plano de Aula Base: Livro - Distributed Systems Professor: Jean Louis de Oliveira.
Período letivo: 4 Semestre. Quinzena: 5ª. Faculdades Santa Cruz - Inove Plano de Aula Base: Livro - Distributed Systems Professor: Jean Louis de Oliveira. Unidade Curricular Sistemas Distribuídos Processos
Bases de Dados. Lab 1: Introdução ao ambiente
Departamento de Engenharia Informática 2010/2011 Bases de Dados Lab 1: Introdução ao ambiente 1º semestre O ficheiro bank.sql contém um conjunto de instruções SQL para criar a base de dados de exemplo
Trabalho Prático Nº1 Introdução ao C#.NET
Trabalho Prático Nº1 Introdução ao C#.NET 1. OBJECTIVOS - Entender o contexto da plataforma.net - Desenvolver programas simples em C#.NET - Saber efectuar entradas de dados em modo Consola e Windows Forms
