Você está na página 1de 40

Módulo 4: Laboratório de Programação

Aula 1
Introdução à Programação Concorrente
Sobre o módulo
Conteúdos programáticos
● Programação Concorrente em Java



● Programação Web em Java




Avaliação do módulo

Teste - Programação Aula 7 25%


Concorrente 08 / 02 / 2021
Classificado de A-E

Avaliação Contínua Todas as semanas 10%


Classificado de A-E quando o projecto
começar
Projeto Aula 36 55%
Classificado de A-E 19 / 03 / 2021
Apresentação Projeto Aula 37 10%
Classificado de A-E 22 / 03 / 2021
O que é a Programação Concorrente?
● Programação Concorrente


● Thread
O que é a Programação Concorrente?

Na programação clássica, temos Em programação concorrente,


apenas a Thread do main() podemos ter mais processos a
serem executados em
simultâneo
Vantagens da Programação Concorrente
● aumento do
desempenho

cores
Vantagens da Programação Concorrente

que são
executadas de forma 100% paralela


Vantagens da Programação Concorrente
● Exemplo prático


O que é uma Thread?

● sequência de comandos a ser executados
num programa


Porquê várias threads?



Tudo acontece em simultâneo!


Ciclo de vida de uma thread
Cenários de execução de threads

● Esta gestão fica a cargo do


processador e não do programador
Multitasking vs Multithreading
● Multitasking

● Multithreading
Multitasking Multithreading
Diferenças entre processo e thread


● Um processo é, por exemplo, um programa em Java.
○ Dentro do nosso programa, podemos ter uma ou mais threads.
Desafios da programação concorrente


Multithreading em Java


Como criar uma Thread em Java?


Exercício 1
Resolução Exercício 1
Classe Thread em Java




Interface Runnable
● A interface Runnable deve ser
implementada por qualquer
classe cujas instâncias sejam
executadas por uma thread.
● Cria uma instância da classe
Thread e passa o seu objeto
Runnable para o seu construtor
como parâmetro.
● É uma outra possibilidade para
criar uma Thread.
Exercício 2
Resolução Exercício 2
O método Sleep em threads



Exemplo Sleep
Exercício 3
Resolução Exercício 3
O método Interrupted em threads
U

● void interrupt()
● boolean isInterrupted()

Uma interrupção não pára a thread nem a coloca em pausa.


Exemplo Interrupted

O que acontece quando a


thread é interrompida

Interrupção da
Thread
O método Join em threads
● A classe Thread fornece o método join() que permite que uma thread
espere que outra thread termine a sua execução.
● Se t for um objeto Thread e está em execução, então t.join() vai garantir que
t acaba antes que a própria thread continue. Ou seja, a thread que invoca
o t.join() vai ficar em espera até que t termine.
● O método t.join(mills) coloca a thread em espera até que o tempo
especificado (millis) passe ou a thread t termine, e apenas depois
continua.
Exemplo Join
Resultado na consola:

Podem
}
ocorrer por
outra ordem }
O que está a acontecer?
Exercício 4
Indique o que é escrito na consola decorrente da execução do seguinte código.
Resolução Exercício 4

Resultado na consola:
Exercício 5
Resolução Exercício 5
Resolução Exercício 5

Você também pode gostar