打字猴:1.700450801e+09
1700450801
1700450802 newSingleThreadExecutor:单线程池。
1700450803
1700450804 顾名思义就是一个池中只有一个线程在运行,该线程永不超时。而且由于是一个线程,当有多个任务需要处理时,会将它们放置到一个无界阻塞队列中逐个处理,它的实现代码如下:
1700450805
1700450806 public static ExecutorService newSingleThreadExecutor(){
1700450807
1700450808 return new FinalizableDelegatedExecutorService(new ThreadPoolExecutor(1,1,0L,
1700450809
1700450810 TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>()));
1700450811
1700450812 }
1700450813
1700450814 它的使用方法也非常简单,下面是简单的示例:
1700450815
1700450816 public static void main(String[]args)throws Exception{
1700450817
1700450818 //创建单线程执行器
1700450819
1700450820 ExecutorService es=Executors.newSingleThreadExecutor();
1700450821
1700450822 //执行一个任务
1700450823
1700450824 Future<String>future=es.submit(new Callable<String>(){
1700450825
1700450826 public String call()throws Exception{
1700450827
1700450828 return””;
1700450829
1700450830 }
1700450831
1700450832 });
1700450833
1700450834 //获得任务执行后的返回值
1700450835
1700450836 System.out.println(“返回值:”+future.get());
1700450837
1700450838 //关闭执行器
1700450839
1700450840 es.shutdown();
1700450841
1700450842 }
1700450843
1700450844 newCachedThreadPool:缓冲功能的线程池。
1700450845
1700450846 建立了一个线程池,而且线程数量是没有限制的(当然,不能超过Integer的最大值),新增一个任务即有一个线程处理,或者复用之前空闲的线程,或者新启动一个线程,但是一旦一个线程在60秒内一直是出于等待状态时(也就是1分钟没工作可做),则会被终止,其源代码如下。
1700450847
1700450848 public static ExecutorService newCachedThreadPool(){
1700450849
1700450850 return new ThreadPoolExecutor(0,Integer.MAX_VALUE,60L, TimeUnit.SECONDS, new
[ 上一页 ]  [ :1.700450801e+09 ]  [ 下一页 ]