多线程解杨辉三角

 时间:2026-02-13 01:17:05

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

  • synchronized同步锁解锁方法
  • wps演示中如何制作健步如飞型封面
  • Word文字双行合一如何设置?
  • wps文字中怎么绘制一个“泪滴形”图形
  • wps页面边框无阴影怎么设置出来颜色
  • 热门搜索
    群公告怎么发 龙舟怎么画 逝怎么读 parents怎么读 抖音怎么拍视频教程 头皮屑多怎么办 阴历和阳历怎么区分 租房合同怎么写 生菜怎么做好吃又简单 转述句怎么改