
/**********************************************************************/
/*                                                                    */ 
/*                        TD 1, Exercice 2                            */
/*                                                                    */
/**********************************************************************/

public class UnEntier {
    int val;
    
    public UnEntier (int x) {
	val = x;
    }
    
    public int intValue() {
	return val;
    }
    
    public void setValue(int x) {
	val = x; 
    }
}


public class Fibon extends Thread {
    int n;
    UnEntier r;
    
    Fibon(int x,UnEntier intref) {
	n=x;
        r=intref; 
    }


    public void run() {
        UnEntier a,b ;

        if (n<2) {
	    r.setValue(1); }
	else {
	    a = new UnEntier(0);
	    b = new UnEntier(0);
	    new Fibon(n-2,b).start();
	    new Fibon(n-1,a).start();
	    while ((a.intValue()==0)||(b.intValue()==0)) {} ;
	    r.setValue(a.intValue()+b.intValue()) ;
	} ;
        return ;

    }
}

public class Exo2 {
    
    public static void main (String [] args) {
        UnEntier n ;

        n = new UnEntier(0);
	new Fibon(8,n).start();    
        while ((n.intValue()==0)) {} ;    
        System.out.print("\n Fibo = "+n.intValue());
    }
}
    
    
    


