JAVA编程思想第四版-多线程的练习答案之练习3
2013-10-21 00:33
363 查看
package exercise.exercise04; 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.exercise04; public interface Generator<T> { T next(); }
package exercise.exercise04; import java.util.Arrays; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; 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) throws InterruptedException { System.out.println("***********************默认实现方式**************************"); //默认实现方式 for (int i = 1; i < 4; i++) { new Thread(new MainFibonacci(i)).start(); } Thread.sleep(2000); System.out.println("***********************Cache实现方式**************************"); //CacheThreadPool实现方式 ExecutorService execCache = Executors.newCachedThreadPool(); for (int i = 1; i < 4; i++) { execCache.execute(new MainFibonacci(i)); } execCache.shutdown(); Thread.sleep(2000); System.out.println("***********************Fixed实现方式**************************"); //FixedThreadPool实现方式 ExecutorService execFix = Executors.newFixedThreadPool(5); for (int i =1; i < 4; i++) { execFix.execute(new MainFibonacci(i)); } execFix.shutdown(); Thread.sleep(2000); System.out.println("***********************Single实现方式**************************"); //SingleThreadPool实现方式 ExecutorService execSingle = Executors.newSingleThreadExecutor(); for (int i = 1; i < 4; i++) { execSingle.execute(new MainFibonacci(i)); } execSingle.shutdown(); } @Override public Integer next() { return getFibonacci(count++); } @Override public void run() { Integer[] sequence = new Integer ; 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] * */
博主才疏学浅,如发现问题,请指正!
相关文章推荐
- JAVA编程思想第四版-多线程的练习答案之练习16
- JAVA编程思想第四版-多线程的练习答案之练习1
- JAVA编程思想第四版-多线程的练习答案之练习18
- JAVA编程思想第四版-多线程的练习答案之练习2
- JAVA编程思想第四版-多线程的练习答案之练习19
- JAVA编程思想第四版-多线程的练习答案之练习4
- JAVA编程思想第四版-多线程的练习答案之练习20
- JAVA编程思想第四版-多线程的练习答案之练习5
- JAVA编程思想第四版-多线程的练习答案之练习6
- JAVA编程思想第四版-多线程的练习答案之练习7
- JAVA编程思想第四版-多线程的练习答案之练习12
- JAVA编程思想第四版-多线程的练习答案之练习8
- JAVA编程思想第四版-多线程的练习答案之练习11
- JAVA编程思想第四版-多线程的练习答案之练习13
- JAVA编程思想第四版-多线程的练习答案之练习9
- JAVA编程思想第四版-多线程的练习答案之练习17
- JAVA编程思想第四版-多线程的练习答案之练习15
- JAVA编程思想第四版-多线程的练习答案之练习10
- 斐波那契数Fibonacci,Java编程思想第四章练习9答案
- Java编程思想第四版第七章练习