日期:2014-05-20  浏览次数:20652 次

java线程的一个小问题
在下,新手,想请教一下下面代码为何会什么结果都出不来?

import java.util.concurrent.*;

public class Fibonacci implements Runnable{
private int n = 0;
private int[] fibo;

public Fibonacci(){}
public Fibonacci(int n){
this.n = n;
fibo = new int[n];
}

public String toString(){
String str = "";
for(int i = 0;i < n; i ++){
str += fibo[i] + " ";
}

return str;
}

public void run(){
fibo[0] = 0;
fibo[1] = 1;
n -= 2;

int i = 2;
while(n-- > 0){
fibo[i] = fibo[i - 1] + fibo [i - 2];
i ++;
}
System.out.println(toString());
Thread.yield();
}

public static void main(String[] arg){
ExecutorService exec = Executors.newCachedThreadPool();
for(int i = 0;i < 5;i ++)
exec.execute(new Fibonacci(20));

exec.shutdown();
}
}



此外在ExecutorService中看到<T> Future<T> 的返回类型声明,请问第一次<T>怎么解释?
多谢!!
java;线程;泛型

------解决方案--------------------
我说你结果咋没有呢,让我试了半天。。。
你在toString时用的 n, 已经在 run()里面被-- 成 -1了。
变成
for(int i = 0;i < -1; i ++){
            str += fibo[i] + " ";
       }

------解决方案--------------------
引用:
此外在ExecutorService中看到<T> Future<T> 的返回类型声明,请问第一次<T>怎么解释?
多谢!!

第一个<T>是表示泛型函数的声明,没有什么实际的意义。