多线程解杨辉三角

2025-10-02 04:40:08

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

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢