java 多线程用例sample

1。 用Executors创建threadpool ,并交由ExecutorService来管理。然后调用ExecutorService.submit 来执行具体的task返回是Future,同坐Future.get(). 便可以   拿到Future的返回值。或者是用ExecutorService.invokeAll(Collection<? extends Callable<T>> tasks)来执行tasklist。

    Executors 提供如下两个API来创建线程池

       public static ExecutorService newFixedThreadPool(int nThreads, ThreadFactory threadFactory):通过threadFactory来创建线程,但线程的数目达到指定数量           后仍有新的task到达,将不会在创建新的线程,而是等待空闲的线程。 

       public static ExecutorService newCachedThreadPool(ThreadFactory threadFactory): 通过threadFactory来创建线程,如果有空闲的线程会先复用先前的线程,         没有空闲的则会创建新的线程。  

     eg: ExecutorService qafThreadPool = Executors.newCachedThreadPool(threadFactory);

2。创建线程(继承线程,或者实现ruanable或这callable,实现callable可以有返回值并且可以抛出checked exception)

   private class callAbleTask implements Callable<Double[]>{    @Override        public Double[] call() throws Exception {     Double[] d = ****;

    return d;    }   }

3。通过Future来取回异步计算的结果。通过 ExecutorService.submit(Callable<Double[]> task)来返回Future 对象。

  Future<Double[]> f = ExecutorService.submit(callAbleTask );

4。通过 ExecutorService.invokeAll(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit) throwsInterruptedException来执行先前定义好的多个task。

我无所事事的度过了今天,是昨天死去的人们所期望的明天。

java 多线程用例sample

相关文章:

你感兴趣的文章:

标签云: