多线程解杨辉三角

 时间:2024-09-22 06:39:57

用java多线程解决杨辉三角问题

工具/原料

eclipse

jdk1.7

方法/步骤

1、创建基本对象,实现runnable接口

2、算法:两个静态数组初始化一个数组(赋值)取得两个元素加和存入新数组对应位置中新数组头尾增添新数组覆盖原数组继续迭代

3、代码如下:packageleo.mythread;importjav瞢铍库祢a.util.*;impor墉掠载牿tjava.util.concurrent.*;publicclassMySequenceimplementsRunnable{publicintleftindex;privateCountDownLatchdoneSignal;publicstaticint[]oarray;publicstaticint[]narray;publicintround;publicMySequence(CountDownLatchdoneSignal,intleftindex){this.doneSignal=doneSignal;this.leftindex=leftindex;}publicstaticintcounting(intleft,intright){returnleft+right;}publicvoidspush(intnumber,intindex){synchronized(narray){narray[index+1]=number;System.out.println(number);System.out.println("index:"+(index+1)+""+narray[index+1]);}}publicintsget(intindex){synchronized(oarray){returnoarray[index];}}@Overridepublicvoidrun(){//TODOAuto-generatedmethodstubintl=0;intr=0;ints=0;l=this.sget(this.leftindex);r=this.sget(this.leftindex+1);s=counting(l,r);this.spush(s,this.leftindex);doneSignal.countDown();}}

4、publicvoidtestt筠续师诈ri()throwsInterruptedException{MySequence.oa鸡堕樱陨rray=newint[2];MySequence.oarray[0]=1;MySequence.oarray[1]=1;for(inti=0;i<10;i++){CountDownLatchdoneSignal=newCountDownLatch(i+1);MySequence.narray=newint[i+3];MySequence.narray[0]=1;Thread[]p=newThread[i+1];for(intj=0;j<i+1;j++){p[j]=newThread(newMySequence(doneSignal,j));p[j].start();}doneSignal.await();MySequence.narray[i+2]=1;for(intk=0;k<MySequence.narray.length;k++){System.out.println(MySequence.narray[k]);}MySequence.oarray=MySequence.narray;}}

synchronized同步锁解锁方法 wps演示中如何制作健步如飞型封面 Word文字双行合一如何设置? wps文字中怎么绘制一个“泪滴形”图形 wps页面边框无阴影怎么设置出来颜色
热门搜索
下载手机图片 中国旗袍图片 超大图片 欺骗眼睛的图片 沙宣头发型图片