ورود

View Full Version : پیدا کردن اعداد پاندروم با استفاده ازترد ها



parinaz571
جمعه 18 آبان 1386, 14:40 عصر
سلام
من این برنامه رو نوشتم
پیدا کردن اعداد پالندروم با استفاده ازترد ها
میشه ببینید چرا ارور میگیره؟
پاک کلافم کرده


package palindromen;
import java.lang.Integer;
import java.lang.String;

public class Main {

public Main() {
}

public static void main(String[] args)
{int nop,anyt;
Keyboard key=new Keyboard();
System.out.println("Enter number of processors : ");

nop=key.readInt();
anyt=20000/nop;

T Threads[]=new T[nop];
Palindromeset p=new Palindromeset();
for(int i=1;i<=nop;i++) {
Threads[i]=new T("Threads"+Integer.toString(i));
Threads[i].setr((i*anyt),anyt*(i+1),p);

}

for(int i=1;i<=nop;i++)
Threads[i].start();

for(int i=1;i<=nop;i++)
try{
Threads[i].join();
}
catch(Exception e)
{ }



p.print();





}

}

-------------------------------------

package palindromen;


public class Palindromeset extends Thread{
private int buffer[];
private int count;

/** Creates a new instance of Palindromeset */
public Palindromeset() {
count=0;
buffer=new int[20000];
}


public synchronized void addNum(int x)
{buffer[count]=x;
count++;
}

public void print(){
for(int i=0;i<count;i++)
{ System.out.println(buffer[i]);
System.out.println(" ");
}
System.out.println();
System.out.println(count);

}



}
-------------------------------------------------

package palindromen;


public class T extends Thread{


public int lowr,highr,n;

volatile Palindromeset c;


public void setr(int lr,int hr,Palindromeset pt)
{
lowr=lr;
highr=hr;
c=pt;}


public T(String s) {

this.setName(s);
}

public void run()

{for(int i=lowr;i<highr;i++){


n = i; //used at last time check

int reverse=0,remainder;

while(i > 0){

remainder = i % 10;

reverse = reverse * 10 + remainder;

i = i / 10; }

if(reverse == n)
c.addNum(i);
}
}
}