1、创建基本对象,实现runnable接口
2、算法:两个静态数组初始化一个数组(赋值)取得两个元素加和存入新数组对应位置中新数组头尾增添新数组覆盖原数组继续迭代
3、代码如下:package leo.mythread;import java.util.*;import java.util.concurrent.*;public class MySequence implements Runnable{ public int leftindex; private CountDownLatch doneSignal; public static int []oarray; public static int []narray; public int round; public MySequence(CountDownLatch doneSignal,int leftindex) { this.doneSignal=doneSignal; this.leftindex=leftindex; } public static int counting(int left,int right) { return left +right; } public void spush(int number, int index) { synchronized(narray) { narray[index+1]=number; System.out.println(number); System.out.println("index:"+(index+1)+" "+narray[index+1]); } } public int sget(int index) { synchronized(oarray) { return oarray[index]; } } @Override public void run() { // TODO Auto-generated method stub int l=0; int r=0; int s=0; l=this.sget(this.leftindex); r=this.sget(this.leftindex+1); s=counting(l, r); this.spush(s, this.leftindex); doneSignal.countDown(); } }
4、public void testt筠续师诈ri() throws InterruptedException { MySequence.oarray=new int[2]; MySequence.oarray[0]=1; MySequence.oarray[1]=1; for(int i=0;i<10;i++) { CountDownLatch doneSignal=new CountDownLatch(i+1); MySequence.narray=new int[i+3]; MySequence.narray[0]=1; Thread [] p=new Thread[i+1]; for(int j=0;j<i+1;j++) { p[j]=new Thread(new MySequence(doneSignal,j)); p[j].start(); } doneSignal.await(); MySequence.narray[i+2]=1; for(int k=0;k<MySequence.narray.length;k++) { System.out.println(MySequence.narray[k]); } MySequence.oarray=MySequence.narray; } }