Você está na página 1de 6

Faculdade Anhanguera de

Taubat Unidade II
Curso de Cincia da
Computao
Programao Concorrente
Prof. Jorge Simeo
Nome: Juliano Almeida
RA:7083559163

Multiprogramao
Corresponde a diversos programas distintos ( paralelo ou
concorrente ) executando em um mesmo processador.

Processos e Threads
Processos : um programa em execuo, quais contem linhas de

cdigo para que a execuo do programa seja realizada


apropriadamente.
Threads : programa que trabalha como um subsistema independente

de um programa maior, executando algumas tarefas especificas. O


suporte threads fornecido pelo prprio sistema operacional,no caso
da linha de execuo ao nvel do ncleo ou implementada atravs de
uma biblioteca de uma determinada linguagem no caso de uma User
Level Thread (ULT)
Threads em java:
import java.io.*;
public class Example implements Runnable
{
static Thread threadCalculate; // Cria o thread.
static Thread threadListen;
long totalPrimesFound = 0;
public static void main (String[] args)

{
Example e = new Example();
threadCalculate = new Thread(e);
threadListen = new Thread(e);
threadCalculate.start();
threadListen.start();
}
public void run()
{
Thread currentThread = Thread.currentThread();
if (currentThread == threadCalculate)
calculatePrimes();
else if (currentThread == threadListen)
listenForStop();
}
public void calculatePrimes()
{
int n = 1;
while (true)
{
n++;
boolean isPrime = true;
for (int i = 2; i < n; i++)
if ((n / i) * i == n)
{
isPrime = false;
break;
}
if (isPrime)
{
totalPrimesFound++;
System.out.println(n);

}
}
}
private void listenForStop()
{
BufferedReader input = new BufferedReader(new
InputStreamReader(System.in));
String line = "";
while (!line.equals("stop"))
{
try
{
line = input.readLine();
}
catch (IOException exception) {}
}
System.out.println("Found " + totalPrimesFound +
" prime numbers before you said stop");
System.exit(1);
}
}

Processos Concorrentes e Multitreads

Processos concorrentes: executam ao mesmo tempo podem existir de


maneira independente um dos outros ou podem requerer sincronizao
ocasional ou cooperao

Multithreads: Na tentativa de diminuir o tempo gasto na


criao/eliminao de (sub)processos, bem como economizar recursos
do sistema como um todo, foi introduzido o conceito de thread. Em
um ambiente de mltiplos threads (multithread), no necessrio
haver vrios processos para se implementar aplicaes concorrentes.
No ambiente multithread, cada processo pode responder a vrias

solicitaes concorrentemente ou mesmo simultaneamente, se houver


mais de um processador.
Multithreads com java:
private void somarLinhas() {
for (int linha = 0; linha < NUMERO_LINHAS; linha += 1) {
calcularLinha(linha); // nesse mtodo que cria e executa as Threads
}
}
private void calcularLinha(int linha) {
Thread thread = new Thread(new CalcularLinha(linha));
thread.setDaemon(false);
thread.setName("linha-" + linha);
thread.start();
}
private class CalcularLinha implements Runnable {

private final int linha;


private CalcularLinha(int linha) {
this.linha = linha;
}
@Override
public void run() {
for (int coluna = 0; coluna < NUMERO_COLUNAS; coluna += 1) {
calcular(linha, coluna);
}
}
}

Referenciais
http://equipe.nce.ufrj.br/thome/grad/so_old/apostila/Processos.pdf
http://www.hardware.com.br/termos/thread
https://pt.wikipedia.org/wiki/Thread_(ci%C3%AAncia_da_computa
%C3%A7%C3%A3o)

Você também pode gostar