code: @SuppressWarnings("unchecked")
  		public <T,I> Collection<T> startWorking(Collection<Callable<I>> callables) 
  		 {
  			    List<Future<I>> list = new ArrayList<Future<I>>();
  			    
  			    for (Callable<I> callable : callables)
  			    {
  			    	list.add(executor.submit(callable));
  			    }
  			    
  			   
  			    ArrayList<T> resultList = new ArrayList<T>(callables.size());
  			    
  			    // Now retrieve the result
  			    I output;
  			    for (Future<I> future : list) 
  			    {
  			      try 
  			      {  
  			    	  output = future.get();
  			    	  
  			    	  if(output != null)
  			    		  resultList.add((T)output);
  			      } 
  			      catch (InterruptedException e) 
  			      {
  			        throw new SystemException(e);
  			      } 
  			      catch (ExecutionException e) 
  			      {
  			    	  Throwable cause =  e.getCause();
  			    	  if(cause == null)
  			    		  cause = e;
  			    	  if(cause instanceof RuntimeException)
  			    		  throw (RuntimeException)cause;
  			    		  
  			    	  throw new SystemException(cause);
  			      }
  			    }
  			    
  			  return resultList;
  		 }
docs: --------------------------------------------------------