title: Is there a way to take an argument in a callable method?
body: <p>I have created a piece of code which takes an IP address (from main method in another class) and then loops through a range of IP addresses pinging each one as it goes. I have a GUI front end on this and it was crashing (hence why I've done the multithreading. My problem is I can no longer take the IP address as an argument in my ping code as its callable. I've searched all over for this and cant seem to find a way to get round this. Is there a way for a callable method to take arguments? If not is there any other way to accomplish what I'm trying to do?</p>
  
  <p>sample of my code:</p>
  
  <pre><code>public class doPing implements Callable&lt;String&gt;{
  
  public String call() throws Exception{
  
      String pingOutput = null;
  
      //gets IP address and places into new IP object
      InetAddress IPAddress = InetAddress.getByName(IPtoPing);
      //finds if IP is reachable or not. a timeout timer of 3000 milliseconds is set.
      //Results can vary depending on permissions so cmd method of doing this has also been added as backup
      boolean reachable = IPAddress.isReachable(1400);
  
      if (reachable){
            pingOutput = IPtoPing + " is reachable.\n";
      }else{
          //runs ping command once on the IP address in CMD
          Process ping = Runtime.getRuntime().exec("ping " + IPtoPing + " -n 1 -w 300");
          //reads input from command line
          BufferedReader in = new BufferedReader(new InputStreamReader(ping.getInputStream()));
          String line;
          int lineCount = 0;
          while ((line = in.readLine()) != null) {
              //increase line count to find part of command prompt output that we want
              lineCount++;
              //when line count is 3 print result
              if (lineCount == 3){
                  pingOutput = "Ping to " + IPtoPing + ": " + line + "\n";
              }
          }
      }
      return pingOutput;
  }
  }
  </code></pre>
  
  <p>IPtoPing used to be the argument that was taken.</p>