PackageCom.demo.test3;Importjava.util.ArrayList;Importjava.util.List;ImportJava.util.Random;Importjava.util.concurrent.Callable;Importjava.util.concurrent.ExecutionException;ImportJava.util.concurrent.ExecutorService;Importjava.util.concurrent.Executors;Importjava.util.concurrent.Future;/** * @authorqq:1236897 **///working order (0000) and (aaaa,bbbb,cccc,dddd) parallel, (AAAA), (BBBB), (CCCC), (dddd) for serial presence Public classDemotest { Public Static voidMain (string[] args) {FinalThreadservice Service =NewThreadservice (); Service.renderpage (); }}classThreadservice {Private FinalExecutorservice executor =Executors.newcachedthreadpool (); Public voidRenderpage () {Finallist<string> list =NewArraylist<string>(); List.add ("AAAA"); List.add ("BBBB"); List.add ("CCCCC"); List.add ("DDDDDD"); Callable<List<String>> task =NewCallable<list<string>>() {@Override PublicList<string> Call ()throwsException {List<String> result =NewArraylist<string>(); for(String str:list) {System.out.println ("Input to result ..."); Random R=NewRandom (); DoubleD2 = R.nextdouble () * 5; Thread.Sleep (1000* (int) D2); Result.add (str); } returnresult; } }; Future<List<String>> future =Executor.submit (Task); System.out.println ("000000000-" + "======= here and task Parallel ===================="); Try{List<String> res =Future.get (); for(String s:res) {System.out.println (s+"--"+Thread.CurrentThread (). GetName ()); } } Catch(interruptedexception e) {//TODO auto-generated Catch blockE.printstacktrace (); } Catch(executionexception e) {//TODO auto-generated Catch blockE.printstacktrace (); } executor.shutdown (); }}
//==============================================================================================
PackageCom.demo.test4;Importjava.util.ArrayList;Importjava.util.List;ImportJava.util.Random;Importjava.util.concurrent.Callable;ImportJava.util.concurrent.CompletionService;Importjava.util.concurrent.ExecutionException;ImportJava.util.concurrent.ExecutorCompletionService;ImportJava.util.concurrent.ExecutorService;Importjava.util.concurrent.Executors;Importjava.util.concurrent.Future;/** * @authorqq:1236897 **///working mode-(0000) and (aaaa,bbbb,cccc,dddd) parallel start, (AAAAA) (BBBBB) (CCCCC) (DDDDD) work in parallel Public classDemoTest2 {/** * @paramargs*/ Public Static voidMain (string[] args) {//TODO auto-generated Method StubThreadservice Service =NewThreadservice (); Service.renderpage (); }}classThreadservice {Private FinalExecutorservice executor =Executors.newcachedthreadpool (); Public voidRenderpage () {Finallist<string> list =NewArraylist<string>(); List.add ("AAAA"); List.add ("BBBB"); List.add ("CCCCC"); List.add ("DDDDDD"); Completionservice<String> Completionservice =NewExecutorcompletionservice<string>(executor); for(FinalString s:list) {Completionservice.submit (NewCallable<string>() {@Override PublicString Call ()throwsException {//TODO auto-generated Method StubRandom r =NewRandom (); DoubleD2 = R.nextdouble () * 5; Thread.Sleep (1000 * (int) D2); returns; } }); } System.out.println ("00000" + "========== parallel start = ="); Try { for(inti = 0; I < list.size (); i++) { future<String> str =Completionservice.take (); String s=Str.get (); System.out.println (s); } } Catch(interruptedexception e) {//TODO auto-generated Catch blockE.printstacktrace (); } Catch(executionexception e) {//TODO auto-generated Catch blockE.printstacktrace (); } }}
Java_executorservice, Completionservice-There is a return value in parallel working mode