ciao a tutti. ho scritto questo programma per avere più flussi di esecuzione, ma a quanto pare sembra che funzioni uno thread alla volta e non riesco a capire il perchè.
codice:
package javaapplication1;

import java.io.*;
import java.net.*;
import java.lang.*;
import java.util.*;

class pingati031 extends connessione implements Runnable{
    public void run(){}
    public Vector ipdapingare031(byte[]mioip,int[]altroip,boolean x,int i,int j,InetAddress indirizzo,Vector ipcherispondono031)throws Exception{
      for(i=0;i<10;i++){
                  for(j=0;j<256;j++){
                      altroip[2]=i;
                      altroip[3]=j;
                      mioip[0]=(byte)altroip[0];
                      mioip[1]=(byte)altroip[1];
                      mioip[2]=(byte)altroip[2];
                      mioip[3]=(byte)altroip[3];
                      x=indirizzo.getByAddress(mioip).isReachable(5000);
                      indirizzo=InetAddress.getByAddress(mioip);
                      if(x){
                          System.out.print("\n"+altroip[0]+"."+altroip[1]+"."+altroip[2]+"."+altroip[3]+" pinga");
                           ipcherispondono031.add(indirizzo);
      
    }
}
      }return ipcherispondono031;}}

class pingati3263 extends connessione implements Runnable{
    public void run(){}
    public Vector ipdapingare3263(byte[]mioip,int[]altroip,boolean x,int i,int j,InetAddress indirizzo,Vector ipcherispondono3263)throws Exception{
      for(i=10;i<12;i++){
                  for(j=0;j<256;j++){
                      altroip[2]=i;
                      altroip[3]=j;
                      mioip[0]=(byte)altroip[0];
                      mioip[1]=(byte)altroip[1];
                      mioip[2]=(byte)altroip[2];
                      mioip[3]=(byte)altroip[3];
                      x=indirizzo.getByAddress(mioip).isReachable(5000);
                      indirizzo=InetAddress.getByAddress(mioip);
                      if(x){
                          System.out.print("\n"+altroip[0]+"."+altroip[1]+"."+altroip[2]+"."+altroip[3]+" pinga");
                          ipcherispondono3263.add(indirizzo);

    }
}
      }return ipcherispondono3263;}}


public class connessione extends Thread {
    public static void main(String[]args)throws Exception{

       InetAddress indirizzo=null;
       NetworkInterface rete=null;
       byte []mioip=new byte[4];
       int[] altroip=new int[4];
       short s;
       int i=0;
       int j=0;
       int k;
       boolean x=false;
       boolean y;
       String nome;
       Vector ipcherispondono031= new Vector();
       Vector ipcherispondono3263=new Vector();
       Vector stampanti=new Vector();

       mioip=indirizzo.getLocalHost().getAddress();
       rete=NetworkInterface.getByInetAddress(indirizzo.getLocalHost());
       System.out.println(rete);
       List<InterfaceAddress> indirizzi = rete.getInterfaceAddresses();
       for (InterfaceAddress elem : indirizzi) {
           System.out.println(elem.toString());
           System.out.println(elem.getNetworkPrefixLength());
           s=elem.getNetworkPrefixLength();
           if(s==16){
           altroip[0]=(int)mioip[0];
           altroip[1]=(int)mioip[1];
           pingati031 e=new pingati031();
           pingati3263 p=new pingati3263();
           e.start();
           p.start();
           e.ipdapingare031(mioip, altroip, x, i, j, indirizzo, ipcherispondono031);
           p.ipdapingare3263(mioip, altroip, x, i, j, indirizzo, ipcherispondono3263);
           
         }
     }
  }
}
non riesco a capire cosa ci sia di sbagliato.