public static ExecutorService evaluateExecutorParam(String arg) {
		int finderImpl = Integer.parseInt(arg);
		if (finderImpl < 1 || 5 < finderImpl) {
			System.out.printf("Unknown executor : %d%n", finderImpl);
			System.exit(-1);
		}
		ExecutorService executor = null;
		int availableProcessors = Runtime.getRuntime().availableProcessors();
		switch (finderImpl) {
		case 1:
			executor = Executors.newSingleThreadExecutor();
			System.out.printf("Using Single Thread Executor%n");
			break;
		case 2:
			executor = Executors.newCachedThreadPool();
			System.out.printf("Using Cached Thread Executor%n");
			break;
		case 3:
			int processors = availableProcessors > 1 ? availableProcessors / 2 : availableProcessors;
			executor = Executors.newFixedThreadPool(processors);
			System.out.printf("Using %d Threads%n", processors);
			break;
		case 4:
			executor = Executors.newFixedThreadPool(availableProcessors);
			System.out.printf("Using %d Threads%n", availableProcessors);
			break;
		case 5:
			executor = Executors.newFixedThreadPool(availableProcessors * 2);
			System.out.printf("Using %d Threads%n", availableProcessors * 2);
			break;
		default:
			break;
		}
		return executor;
	}