private object[] TryMT(Func <bool>[] callables) { var threadPool = Executors.DefaultExecutor(); // NewFixedThreadPool(callables.Length); var futures = new IFuture <bool> [callables.Length]; for (var i = 0; i < callables.Length; i++) { futures[i] = threadPool.Submit(callables[i]); } threadPool.Shutdown(); threadPool.AwaitTermination(10, TimeUnit.SECONDS); var results = new object[futures.Length]; for (var i = 0; i < futures.Length; i++) { results[i] = futures[i].GetValueOrDefault(); } return(results); }