JAVA編程思想第四版-多線程的練習答案之練習2

package exercise.exercise02;

public class Fibonacci implements Runnable {

	int fibonacciCount;
	
	public Fibonacci(int fibonacciCount){
		this.fibonacciCount = fibonacciCount;
	}
	
	@Override
	public void run() {
		System.out.print("Thread "+fibonacciCount+" :");
		
	}
	
	public int getFibonacci(int fibo){
		if(fibo<2){
			return 1;
		}
		return getFibonacci(fibo-1)+getFibonacci(fibo -2);
	}
}
/** out put
 * Thread 1:[0]
 * Thread 2:[0,1]
 * Thread 3:[0,1,1]
 * Thread 4:[0,1,1,2]
 * */
package exercise.exercise02;

public interface Generator<T> {
	T next();
}

package exercise.exercise02;
import java.util.Arrays;

public class MainFibonacci implements Runnable,Generator<Integer>{

	int n;//n表示需要打印出來的fibonacci的個數
	int count;//標記產生的Fibonacci的次數
	public MainFibonacci(int n){
		
		this.n = n;
		System.out.println("exercise "+n);
	}
	
	public static void main(String[] args) {
		for (int i = 1; i < 10; i++) {
			new Thread(new MainFibonacci(i)).start();
		}
	}

	@Override
	public Integer next() {
		return getFibonacci(count++);
	}

	@Override
	public void run() {
		Integer[] sequence = new Integer[n];
		for (int i = 0; i < n; i++) {
			sequence[i] = next();
		}
		System.out.println("sequence "+n+" : "+Arrays.toString(sequence));
	}
	
	public int getFibonacci(int fibo){
		if(0==fibo){//第0個Fibonacci數爲:0
			return 0;
		}
		if(fibo<2){
			return 1;
		}
		return getFibonacci(fibo-1)+getFibonacci(fibo -2);
	}
}
/*
class Fibonacci implements Runnable {

	int fibonacciCount;
	
	public Fibonacci(int fibonacciCount){
		this.fibonacciCount = fibonacciCount;
	}
	
	@Override
	public void run() {
		System.out.print("Thread "+fibonacciCount+" :");
		
	}
	
	public int getFibonacci(int fibo){
		if(fibo<2){
			return 1;
		}
		return getFibonacci(fibo-1)+getFibonacci(fibo -2);
	}
}*/
/** out put
 * Thread 1:[0]
 * Thread 2:[0,1]
 * Thread 3:[0,1,1]
 * Thread 4:[0,1,1,2]
 * */

博主才疏學淺,如發現問題,請指正!此源代碼參考:http://blog.csdn.net/njiang/article/details/8042056
發佈了22 篇原創文章 · 獲贊 1 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章