Buonasera, 
premetto che conosco java ma non ho mai usato i thread.
Avendo un computer multiprocessore volevo provare a velocizzare una routine inventata.
Di seguito il codice:
public class SimpleRunner extends Thread
{
private boolean stopThread = false;
private long[] p1={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
private long[] p2={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
private long[] p3={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
private long[] p4={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
private long[] p5={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
private long[] p6={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
private long[] p7={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
private long[] p8={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
 
 public void run()
 {
  while (! stopThread)
  {
	long prodotto=0;
  	for(int a=0;a<15;a++)
  		for(int b=0;b<15;b++)
  			for(int c=0;c<15;c++)
  				for(int d=0;d<15;d++)
  					for(int e=0;e<15;e++)
  						for(int f=0;f<15;f++)
  							for(int g=0;g<15;g++)
  								for(int h=0;h<15;h++)
  						{
  							if(p1[a]+p2[b]+p3[c]+p4[d]+p5[e]+p6[f]+p7[g]+p8[h]==120){
  								System.out.println(a+b+c+d+e+f);
  								stopRunning();
  							}
  						}
  	System.out.println("Finito!");
  	stopRunning();
  }
  }
 public void stopRunning()
 {
  stopThread = true;
 }
}
public class CalcoloNoThread {
	/**
	 * @param args
	 * @throws InterruptedException 
	 */
	public static void main(String[] args) throws InterruptedException {
		// TODO Auto-generated method stub
		long inizio=System.currentTimeMillis();
		SimpleRunner t1=new SimpleRunner();
		SimpleRunner t2=new SimpleRunner();
		t1.start();
		t2.start();
		t1.join();
		t2.join();
		long fine=System.currentTimeMillis();
		System.out.println("Tempo impiegato:"+(fine-inizio)+" ms");
	}
}
Tuttavia eseguendo il codice sia t1 che t2 eseguono tutto ciò che è contenuto nel run(io pensavo che si tenesse memoria di dove si era giunti nei for innestati) aumentando i tempi al posto che diminuirli.
Dove sto sbagliando?
Stefano