Executor usage

Executor is used to arrange thread execution. Basicly speaking, just manage, how many threads are permited to run together.

 

ExecutorService obj = Executors.newSingleThreadExecutor( ) -- only 1

ExecutorService obj = Executors.newFixedThreadPool(int poolSize) -- fix amount

ExecutorService obj = Executors.newCachedThreadPool( ) --- as many as it can

 

Code Sample

 

Executor e = Executors.newFixedThreadPool(5);

e.execute(new RunnableTask1( ));

e.execute(new RunnableTask2( )); 

e.execute(new RunnableTask3( ));

 

 

While in another aritcle, you can see that, Executors.newFixedThreadPool(5) returns a ExecutorService. Actually, ExecutorService is a subclass of Executor, and it supplies more functionalities than Executor.

 

 

 

 As far as ExecutorService is concerned, it supplies only one advanced function than Executor---how to stop the threads.

 

service.shutdownNow(); //Try to finish all Runnables(started and not started(in queue)), then, stop Executor.

service.shutdown(); //Directly stop the Executor, terminate running Runables, return back not started, yet in queue Runables.

 

There is a internal Queue maintained by ExecutorService. That's the core idea.

 

 

 ------------------------------------------------------------------------------------

Another point, Please pay attention to how they are used to different targets.

 

//FutureObject = ExecutorService.submit(Callable object);

//Executor.execut(Runnable object); //without any returns.

Future<BigInteger> prime1 = service.submit(new RandomPrimeSearch(512));

Future<BigInteger> prime2 = service.submit(new RandomPrimeSearch(512));

Future<BigInteger> prime3 = service.submit(new RandomPrimeSearch(512));

 

 

 

 

 

 

 

 


                            

你可能感兴趣的:(thread,idea)