Escolar Documentos
Profissional Documentos
Cultura Documentos
e Distribuída
Aula 3 – Programação paralela
História do Java
Projeto Green iniciou em 1991 com Patrick Naughton,
Mike Sheridan e James Gosling
Primeiro produto *7 (StarSeven)
Primeiro nome da linguagem
OAK (carvalho)
Testar a aplicação
Herança
Principais métodos:
Construtores: Thread(), Thread (Runnable), Thread(String),
Thread(Runnable, String)...
run(): contém o código executado pela thread. Definido na interface
Runnable. Implementado pela thread ou por um objeto passado
como parâmetro para seu construtor. Quando este método finaliza, a
thread também termina.
start(): inicia a thread em paralelo com a thread que a criou,
executando o código contido no método run(). Este método chama o
método run() antes de terminar.
Universidade Católica de Brasília
Ciência da Computação
PARALELISMO EM JAVA
Hello
public class Hello extends Thread {
public void run() {
System.out.println("Hello world!");
}
}
Alo
public class Alo extends Thread{
public void run() {
System.out.println("Alo mundo!");
}
}
Testar a aplicação
Principais métodos:
Construtores: Thread(), Thread (Runnable), Thread(String),
Thread(Runnable, String)...
Nome da Thread:
Identificador não-único.
Pode ser definido ao criar a Thread
Se não for definido o nome será "Thread-n" (n incremental)
Pode ser redefinido com setName(String)
Pode ser obtido através do método getName()
Testar a aplicação
Outros métodos:
Obter referência da thread em execução: currentThread()
Suspender execução: sleep(long), interrupt()
Aguardar fim da thread: join(), join(long)
Verificar estado: isAlive(), isInterrupted()
Liberar o processador: yield()
Destruir a thread: destroy()
• Testar a aplicação:
• Adapte sua aplicação para
mostrar os nomes das
threads.
parâmetros: users.add(user2);
users.add(user3);
sayHelloMultipleUsers(users);
• A sintaxe geral para usar }
private static void sayHelloMultipleUsers(List<String> users) {
expressões lambda é: HelloWorld helloworld = new HelloWorld();
users.forEach((user)-> {
• (Parâmetros) -> Thread thread = new Thread(()-> helloworld.sayHello(user), user);
{Corpo} thread.start();
});
• onde -> separa os }
}
parâmetros e o public class HelloWorld {
corpo da expressão public void sayHello(String user) {
System.out.println("Hello "+user);
lambda. Thread t = Thread.currentThread();
System.out.println("nome da thread: " + t.getName());
}
}
PARALELISMO EM JAVA
• Testar a aplicação:
• Adicione mais usuários
• Testar a aplicação:
• Adicione uma operação de
multiplicação na calculadora
• Testar a aplicação:
• Insira uma pausa de um segundo entre cada lançamento de
thread
• Thread.sleep(1000L);
• Mostre dentro da thread o instante de tempo:
• System.out.println(“Agora: " +
ZonedDateTime.now().toInstant().toEpochMilli());
• Testar a aplicação:
• Adapte o código de forma que a thread filho
imprima uma mensagem a cada 1 segundo
com um contador de quantas segundos se
passaram.
• Testar a aplicação:
• Adapte o código de forma que a thread filho
continue imprimindo uma mensagem a cada 1
segundo com o contador mas por 20 segundos
• O programa principal deve esperar por 10
segundos testando se a thread está viva mas
depois disso deve terminar a thread filho
Perguntas?
Universidade Católica de Brasília
Ciência da Computação
Obrigado!!!
Atividade!