Sei sulla pagina 1di 6

THREAD - JAVA

CAMPANE 1
Realizzare utilizzando la programmazione concorrente un programma che utilizzando i Thread stampi a video il suono delle
campane e il numero di volte che suona.

Thread c1 = new campane("Din",0);


Thread c2 = new campane("Don",380);
Thread c3 = new campane("Dan",900);

c1.start();
c2.start();
c3.start();

public class campane extends Thread {


String suono;
int ritardo;

campane(String suono, int ritardo) {


this.suono=suono;
this.ritardo=ritardo;
}
public void run() {
for (int i = 0; i < 3; i++) {
if (i!=0) {
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
} else {
try {
Thread.sleep(ritardo);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println(suono);
}
}
}

CAMPANE 2
Thread din = new din();
Thread don = new don();
Thread dan = new dan();

din.start();
don.start();
dan.start();

public class din extends Thread { }


public void run () { }
for (int i = 0; i < 2; i++) { }
System.out.println((i+1)+ " Din");
} public class dan extends Thread {
} public void run() {
} for (int i = 0; i < 2; i++) {
public class don extends Thread { System.out.println((i+1)+ " Dan");
public void run () { }
for (int i = 0; i < 2; i++) { }
System.out.println((i+1)+ " Don"); }
THREAD - JAVA
20 NUMERI
Realizzare utilizzando la programmazione concorrente un programma che utilizzando due Thread stampa a video i primi venti
numeri.

Thread t1 = new primiDieci();


Thread t2 = new secondiDieci();

t1.run();
t2.run();

public class primiDieci extends Thread {


public void run() {
for (int i = 0; i < 10; i++) {
System.out.println(i);
}
}
}
public class secondiDieci extends Thread {
public void run() {
for (int i = 10; i < 21; i++) {
System.out.println(i);
}
}
}

GARA MACCHINE
Realizzare utilizzando la programmazione concorrente un programma che utilizzando i Thread stampi a video la simulazione di una
corsa di macchine. Immaginando di avere 5 macchine gareggiano, simulare l'arrivo al traguardo.

Thread m1 = new macchina("macchina 1");


Thread m2 = new macchina("macchina 2");
Thread m3 = new macchina("macchina 3");
Thread m4 = new macchina("macchina 4");
Thread m5 = new macchina("macchina 5");

m1.start();
m2.start();
m3.start();
m4.start();
m5.start();

public class macchina extends Thread {


String nome ;

macchina (String nome ) {


this.nome=nome;
}

public void run () {


System.out.println(nome);
}
}
THREAD - JAVA
GARA CAVALLI
Simulare una gara di 5 cavalli di 8 giri. A ogni giro modificare lo sleep (tra 600 e 2500)

Thread c1 = new cavallo(1);


Thread c2 = new cavallo(2);
Thread c3 = new cavallo(3);
Thread c4 = new cavallo(4);
Thread c5 = new cavallo(5);

c1.start();
c2.start();
c3.start();
c4.start();
c5.start();

public class cavallo extends Thread {


int n;
cavallo (int n) {
this.n=n;
}

public void run () {


for (int i = 1; i < 9; i++) {
System.out.println("cavallo "+n);
Random casuale = new Random();
int a = 600;
int b = 2500;
int sleep = casuale.nextInt(a,b);
try {
sleep(sleep);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}

STAFFETTA
Simulare una gara a staffetta di 10 partecipanti con 10 step: a ogni step per simulare il cambio di persona modificare lo sleep (tra
200 e 1500) del singolo partecipante

Thread p1 = new staffetta(1);


Thread p2 = new staffetta(2);
Thread p3 = new staffetta(3);
Thread p4 = new staffetta(4);
Thread p5 = new staffetta(5);
Thread p6 = new staffetta(6);
Thread p7 = new staffetta(7);
Thread p8 = new staffetta(8);
Thread p9 = new staffetta(9);
Thread p10 = new staffetta(10);

p1.start();
p2.start();
p3.start();
p4.start();
p5.start();
p6.start();
p7.start();
p8.start();
p9.start();
p10.start();
THREAD - JAVA

public class staffetta extends Thread {


int n ;
staffetta (int n ) {
this.n=n;
}

public void run () {


for (int i = 1; i < 11; i++) {
System.out.println("Partecipante "+n);

Random casuale = new Random();


int a = 200;
int b = 2500;
int sleep = casuale.nextInt(a,b);
try {
sleep(sleep);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}

GARA AUTO
Simulare una gara di 20 auto di 15 giri con 3 pitstop (al giro 3, giro 7 giro 12). Ad ogni giro modificare lo sleep (tra 200 e 1000) di
ogni auto ed a ogni pitstop aggiungere uno sleep (tra 1000 e 3000).

for (int i = 1; i <= 20; i++) {


Thread a = new auto(i);
a.start();
}

public class auto extends Thread {


int numAuto;
auto (int numAuto) {
this.numAuto=numAuto;
}

public void run () {


Random casuale = new Random();
int a = 1000;
int b = 3000;
for (int i = 1; i <= 15; i++) {
System.out.println("GIRO " +i +" AUTO "+ numAuto);
if (i==3 || i==7 || i==12) {
int sleep = casuale.nextInt(a,b);
try {
sleep(sleep);
} catch (InterruptedException e) {
e.printStackTrace();
}
} else {
int A = 200;
int B = 1000;
int sleep2 = casuale.nextInt(A,B);
try {
sleep(sleep2);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}}
THREAD - JAVA
FIGLIO
un thread principale (main()) crea e avvia un nuovo thread (figlio), e poi ogni 500 ms controlla se il figlio è ancora vivo.
Se il figlio ha terminato, termina anche lui. Il processo padre deve produrre varie stampe a video e in particolare, deve stampare il
numero di controlli che effettua. Il thread figlio effettua per n volte una generica attività, che deve essere stampata a video
con:("Status: Work"), di una certa durata.

figlio figlio = new figlio();


figlio.start();

while (figlio.isAlive()) {
int i = 0;
i++;
System.out.println("Status (0)");
Thread.sleep(500);
System.out.println("Status ("+i+")");
System.out.println("Status down");
}

public class figlio extends Thread {


public void run () {
for (int i = 1; i <= 10; i++) {
System.out.println("Status work!");
}
}
}

MERENDA
Realizzare un programma che simuli la corsa alla merenda dei tre nipoti di zio Paperino. I tre nipoti (i tre thread) dovranno simulare
la corsa avanzando di un valore casuale (un contatore che dovrà raggiungere il valore limite 100), mettendosi subito dopo in attesa
per un tempo casuale (si addormenteranno per un numero variabile di secondi) e, al risveglio, cederanno l'esecuzione ad un altro
nipote (thread). Il programma dovrà terminare quando uno dei nipoti avrà raggiunto la merenda, che dista dalla posizione di
partenza 100m. Basta che un solo nipote raggiunga o superi i 100m affinché l’intero programma termini.
N.B.: non utilizzare il metodo exit() per concludere la corsa, bensì si consiglia di utilizzare una variabile statica di classe di tipo
boolean che, a seconda del valore assunto, permetterà a tutti i nipoti di continuare o meno la corsa.

merenda bambino1 = new merenda();


merenda bambino2 = new merenda();
merenda bambino3 = new merenda();

boolean stato = true;


Random casuale = new Random();
double wait;
while (stato) {
bambino1.run();
System.out.println("1- "+bambino1.getI());
if (bambino1.getI()>=100) {
stato=false;
System.out.println("vince il bambino 1");
return;
}
wait = casuale.nextDouble(1000,2000);
Thread.sleep((long) wait);
bambino2.run();
System.out.println("2- "+bambino2.getI());
if (bambino2.getI()>=100) {
stato=false;
System.out.println("vince il bambino 2");
return;
}
wait = casuale.nextDouble(1000,2000);
Thread.sleep((long) wait);
bambino3.run();
THREAD - JAVA
System.out.println("3- "+bambino3.getI());
if (bambino3.getI()>=100) {
stato=false;
System.out.println("vince il bambino 3");
return;
}
wait = casuale.nextDouble(1000,2000);
Thread.sleep((long) wait);

public class merenda extends Thread {


int i = 0;
Random casuale = new Random();
public void run () {
int corsa = casuale.nextInt(1,99);
i = i+corsa;
}

public int getI() {


return i;
}
}

Potrebbero piacerti anche