Você está na página 1de 31

2.

1 PROGRAMAÇÃO EM JAVA USANDO


THREADS
Professor: Edilson Lima
2

THREADS
Para o desenvolvimento de um software são necessários diversos
conhecimentos sobre as maneiras de criação de interface gráfica, as
diversas formas de conexão com o banco de dados e a utilização detalhada
da orientação a objetos. Uma solução computacional tende a crescer e a se
tornar mais complexa com o tempo, todos os cuidados mencionados
elevam as possibilidades do sistema manter-se estável.
3
2.1 PROGRAMAÇÃO EM JAVA USANDO THREADS

▸ Entretanto, para que novas demandas sejam atendidas, são


necessárias mais técnicas e elementos de programação, a fim
de propiciar o processamento e o acesso à informação de
forma eficiente.
4
2.1 PROGRAMAÇÃO EM JAVA USANDO THREADS

▸ Com o avanço tecnológico o hardware evoluiu para


processadores que possuem diversos núcleos para a
execução de instruções, levando novamente a necessidades
mais específicas de programação.
5
2.1 PROGRAMAÇÃO EM JAVA USANDO THREADS

▸ Esses cenários mais complexos necessitam da execução de


processos que tiram o máximo de rendimento do hardware,
levando a um tempo menor de processamento e melhorando
as formas de interação com o usuário.
6
2.1 PROGRAMAÇÃO EM JAVA USANDO THREADS

▸ Observando as necessidades de aproveitar diversos núcleos de


processamento, desenvolvendo softwares que usam o hardware
de maneira mais eficiente, pode-se pensar em duas abordagens.
7
2.1 PROGRAMAÇÃO EM JAVA USANDO THREADS

I. Consiste em gerar diversos executáveis de um programa para


processar as informações, todavia, essa abordagem gera
formas mais complexas e lentas de comunicação.
8
2.1 PROGRAMAÇÃO EM JAVA USANDO THREADS

Thread: conceito
▸ Uma thread nada mais é do que um fluxo de execução ou uma
linha de execução dentro de um processo. Para um software
efetuar diversas tarefas ao mesmo tempo, é preciso utilizar
os diversos núcleos do processador de forma paralela, ou
seja, é preciso criar um programa que possua várias threads
ou simplesmente multithread (DEITEL e DEITEL, 2016).
9
2.1 PROGRAMAÇÃO EM JAVA USANDO THREADS

Threads na linguagem Java


▸ Na linguagem Java, para que seja possível a criação dessas
linhas de execução, é necessário utilizar uma Application
Programming Interface (API) que interaja com o sistema
operacional, determine a criação das threads e faça as
configurações necessárias (FURGERI, 2015).
10
2.1 PROGRAMAÇÃO EM JAVA USANDO THREADS

▸ Além da criação, é necessário observar que as threads


possuem estados de execução relativos ao tempo de
processamento concedido pelo sistema operacional.
11
2.1 PROGRAMAÇÃO EM JAVA USANDO THREADS

Passos de criação e os possíveis estados de uma threads


12
2.1 PROGRAMAÇÃO EM JAVA USANDO THREADS
13
2.1 PROGRAMAÇÃO EM JAVA USANDO THREADS

Aplicação usando thread na linguagem Java


▸ Um cenário para aplicação de threads são os watchdogs,
softwares que têm o objetivo de monitorar recursos e
aplicações. Como exemplo, podemos citar o monitoramento
de uma conexão com o sistema de gerenciamento de banco
de dados ou ainda a execução de um software de controle de
câmeras de segurança.
14
2.1 PROGRAMAÇÃO EM JAVA USANDO THREADS

▸ Entretanto, é importante mencionar que, para que novas


demandas sejam atendidas, são necessárias mais técnicas e
mais elementos de programação, a fim de propiciar o
processamento e o acesso à informação de forma eficiente.
15
2.1 PROGRAMAÇÃO EM JAVA USANDO THREADS

▸ O uso de threads é essencial para que seja possível produzir


códigos de qualidade que utilizam os recursos do
processador de forma otimizada.
16
2.1 PROGRAMAÇÃO EM JAVA USANDO THREADS

▸ A implementação desses recursos cria diversas possibilidades


para interações, desempenho e monitoramento. Todavia, como é
uma execução paralela, deve-se planejar e manter a organização
do código para evitar problemas de alto uso de recursos e
problemas de sincronismo.
17

▸ Agora você criar e controlar as threads de


maneira inicial e criar programas que
façam uso dessas threads seguindo os
conceitos da orientação a objetos. Para
isso se deve lembrar sempre que uma
thread não é apenas um método e sim um
conjunto de execução que deve respeitar
os elementos da orientação a objetos.
18

▸ Como referências os dois livros abaixo


possuem exemplos e exercícios:
▪ DEITEL, Paul; DEITEL, Harvey. Java -como
programar. 10ed. São Paulo: Pearson, 2016.
968 p.
▪ HORSTMANN, CayS. Core Java Volume I -
Fundamentals. 10 ed. New York: Prentice
Hall, 2016. 1040 p.
19 Atividade proposta:

▸ A tarefa consiste em você criar e ler diversos


arquivos de texto em um diretório utilizando
thread para que seja possível tornar o processo
mais rápido. O arquivos contém os dados das
multas geradas no dia com o formato placa do
carro; e valor da multa.
▸ Exemplo:
AAA1234,250;00BBBB1234,100.8;oxs0880,69.99;
20 Atividade proposta:
▸ Procedimentos para a realização da atividade:
Crie uma classe que possua um thread para fazer o processamento:
1. Criar uma classe que implementa a interface Runnable:
• public class ProcessadorMultas implements Runnable
2.Declarar como atributos a representação da thread e o caminho dos
arquivos:
• privateThread th;
• private String caminhoArquivos;
3.No construtor instanciar a classe thread indicando a própria classe como
método da thread:
• th= newThread(this);
4.No método "run()" fazer a leitura dos arquivos do diretório e exibir na
terminal os dados:
• Public void run()
21 Atividade proposta:

▸ Caso tenha dúvidas quanto a


implementação verifique uma solução.
22 Atividade proposta:

packageU2S1;

Import java.io.File;
Import java.io.FileNotFoundException;
Import java.io.FileReader;
Import java.util.Scanner;

Public class ProcessadorMultas implements Runnable{


private Thread th;
private String caminhosArquivos;
private int qtdFiles;
private int arquivoAtual;
23 Atividade proposta:

public ProcessadorMultas (String pCaminhosArquivos)


{
th= new Thread(this);
caminhosArquivos = pCaminhosArquivos;
}
public void inciar(){
th.start();
}
24 Atividade proposta:

@Override
public void run() {

File diretorio = new File(caminhosArquivos);


File[] listaDeArquivos = diretorio.listFiles();
qtdFiles = listaDeArquivos.length;
for (int i = 0; i < listaDeArquivos.length; i++) {
arquivoAtual = i;
if (listaDeArquivos[i].isFile()) {
String nomeArquivos = listaDeArquivos[i].getName();
processaMulta(caminhosArquivos + nomeArquivos);
}
}
}
25 Atividade proposta:
public void processaMulta(String nomeArquivo) {
Scanner in;
try {
in = new Scanner(new FileReader(nomeArquivo));

while (in.hasNext()) {

//faz a separação primaria dos dados no arquivo,


//combinando dados vinculados: a placa com sua multa
String[] dadospri = in.next().split(";");
26 Atividade proposta:
//faz a separação dos dados (placa, multa) para a impressão
na tela
for (String p : dadospri) {

//dados[0] - equivale a placa; dados[1] -


equivale ao valor da multa
String[] dados = p.split(",");
String placa = dados[0];
String valor = dados[1];
System.out.println("Placa do carro: " + placa +
" Valor da multa: " + valor);

}
}

} catch (FileNotFoundException e) {
e.printStackTrace();
}
27 Atividade proposta:

public static void main(String[] args)


{
ProcessadorMultas pa1= new ProcessadorMultas("c:\\multas\\");
pa1.inciar();
}
}
28 Atividade proposta:

Para verificar se a tarefa foi concluída com sucesso, os seguintes


itens devem ser contemplados:
1. Existe uma classe que implementa interface Runnable com o método
"run()";
2. Foi inicializada a thread e o processo ocorre de maneira concorrente;
3. O aluno criou uma pasta chamada multas na raiz c:\;
4. O aluno criou arquivos dentro desse diretório com o formato
especificado;
5. O programa está executando sem erros;
6. Os métodos possuem alta coesão.
29

Obrigado!
Não somos o que a sociedade e o acaso fizeram de nós, e sim
o que escolhemos ser, desde o mais profundo do nosso ser.
Peter Koestenbaum

edilsonlima3@gmail.com
30
Bibliografia

Programação Orientada a Objetos com Java - 4ª Ed.


Barnes,David J.; Kolling,Michael - Pearson Universidades

Programação Orientada A Objetos - Conceitos e


Técnicas
Furgeri, Sergio - Editora Érica
31

Bons estudo, muita dedicação e exclentes resultados.

😉 Email
edilsonlima3@gmail.com

✋👆👉👍👤👦👧👨👩👪💃
🏃💑❤😂😉😋😒😭👶😸🐟🍒
🍔💣📌📖🔨🎃🎈🎨🏈🏰🌏
🔌🔑 em busca de resultados...

Você também pode gostar