Você está na página 1de 2

Fibonacci.

java
1
/* PROGRAMA ADILSON, FIBONACCI + THREADS + ESTRITA ALTERNANCIA
2
* ALUNO : VITOR FERNANDES DE BRITO ALVES
3
* DATA : 22/10/2011
4
*/
5
6
7
public class Fibonacci {
8
public static void main (String[] args) {
9
/* CLASSE MAIN DECLARAO DOS OBJETOS (PROCESSOS) ################ */
10
cVarCompartilhada varCompartilhada = new cVarCompartilhada();
11
cProcesso0 processo0 = new cProcesso0 (varCompartilhada);
12
cProcesso1 processo1 = new cProcesso1 (varCompartilhada);
13
cProcesso2 processo2 = new cProcesso2 (varCompartilhada);
14
processo0.start();
15
processo1.start();
16
processo2.start();
17
/* CLASSE MAIN DECLARAO DOS OBJETOS (PROCESSOS) ################ */
18
}
19
}
20
21
/* CLASSE02 DECLARAO DAS VARIAVEIS ################ */
22
class cVarCompartilhada {
23
int A, B, turn, C, X;
24
public cVarCompartilhada() {
25
A = 1; B = 1; C = 1;
26
turn = 0;
27
X = 0;
28
}
29
}
30
/* CLASSE02 DECLARAO DAS VARIAVEIS ################ */
31
32
33
34
/* CLASSE03 CALCULO DE FIBONNACI ################ */
35
class Fibonnaci {
36
37
public static int Fibonnaci(int x) {
38
if (x==1) {
39
return 0;
40
}
41
else if (x==2) {
42
return 1;
43
44
}
45
else {
46
return Fibonnaci(x-1)+Fibonnaci(x-2);
47
}
48
}
49
50
}
51
/* CLASSE03 CALCULO DE FIBONNACI ################ */
52
53
54
55
56
class cProcesso0 extends Thread { // THREAD DO PROCESSO 0
57
cVarCompartilhada varCompartilhada;
58
public cProcesso0(cVarCompartilhada vc) {
59
varCompartilhada = vc;
60
}
61
62
63
/* CLASSE PRINCIPAL PARA EXIBIR AS VARIAVEIS NO VALOR FINAL */
64
public void run() {
65
while (varCompartilhada.turn!=0) {System.out.println("P0 ESPERANDO PARA
CALCULAR");} //LOOP PARA TRAVAR PROCESSO 0
66
67
while (varCompartilhada.X<5){
68
varCompartilhada.X++;
69
varCompartilhada.A = Fibonnaci.Fibonnaci(varCompartilhada.C++);
70
varCompartilhada.B = Fibonnaci.Fibonnaci(varCompartilhada.C++);
71
72
if (varCompartilhada.A == 0){}
73
74
else{
75
System.out.println ("Fibonacci = "+varCompartilhada.A);
76
System.out.println ("Fibonacci = "+varCompartilhada.B);
77
}
78
79
80
}
81
varCompartilhada.turn = 1;
1 of 2

26/Oct/2011

Fibonacci.java
26/Oct/2011
82
}
83
}
84
/* CLASSE PRINCIPAL PARA EXIBIR AS VARIAVEIS NO VALOR FINAL */
85
86
87
88
class cProcesso1 extends Thread {
89
cVarCompartilhada varCompartilhada;
90
public cProcesso1(cVarCompartilhada vc) {
91
varCompartilhada = vc;
92
}
93
94
95
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%*/
96
public void run () {
97
while (varCompartilhada.turn !=1) {System.out.println("P1 ESPERANDO");} //LOOP
PARA TRAVAR PROCESSO 1, CASO DIFERENTE DE 1, ESPERA O PROCESSO 2 EXECUTAR
98
99
while (varCompartilhada.X<5){ //AQUI DEFINIMOS A QUANTIDADE DE EXECUES, 5, CO
FOI PEDIDO NO ENUNCIADO
100
varCompartilhada.X++;
101
varCompartilhada.A = Fibonnaci.Fibonnaci(varCompartilhada.C++);
102
varCompartilhada.B = Fibonnaci.Fibonnaci(varCompartilhada.C++);
103
}
104
varCompartilhada.turn = 2;
105
}
106
}
107
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%*/
108
109
110
111
class cProcesso2 extends Thread {
112
cVarCompartilhada varCompartilhada;
113
public cProcesso2(cVarCompartilhada vc) {
114
varCompartilhada = vc;
115
}
116
117
118
119
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%*/
120
public void run () {
121
while (varCompartilhada.turn !=2) {System.out.println ("P2 ESPERANDO");} //LOOP
PARA TRAVAR PROCESSO 2, CASO TURN SEJA DIFERENTE DE 2
122
// ELE ESPERA O PROCESSO 1 EXECUTAR
123
124
while (varCompartilhada.X<5){
125
varCompartilhada.X++;
126
varCompartilhada.A = Fibonnaci.Fibonnaci(varCompartilhada.C++);
127
varCompartilhada.B = Fibonnaci.Fibonnaci(varCompartilhada.C++);
128
}
129
varCompartilhada.turn = 0;
130
}
131
}
132
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%*/

2 of 2

Você também pode gostar