【算法笔记】多线程斐波那契数列

多线程斐波那契数列

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();
        }
    }
}

通过线程调度实现多线程实现斐波那契数列

你可能感兴趣的:(算法)