多线程斐波那契数列
Fibonacci 类多线程实现斐波那契数列。
在多线程中,需要线程共享的变量必须使用静态变量。
根据公式F[N] = F[N-1] + F[N-2]
可知至少需要要两个线程共享的变量,另外由于需要记录角标,另设一个线程共享变量
public class Fibonacci implements Runnable {
public static int num = 2; //用于记录角标,静态变量实现多线程共享
public int numRe ; //用于记录角标,常量实现线程内角标持久化
public static int a = 0; //f[n-2]
public static int b = 1; //f[n-1]
public int c; //f[n]
public Fibonacci() {
c = a + b;
a = b;
b = c;
numRe = num++;
}
public void run() {
System.out.println("F["+ numRe +"]="+ c);
Thread.yield();
}
}
Generate 是对Fibonacci的线程执行
public class Generate {
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
new Thread(new Fibonacci()).start();
}
}
}
通过线程调度实现多线程实现斐波那契数列