用submit方法,返回一个Future,然后调用Future中的V get(long timeout, TimeUnit unit)方法,timeout就是超时时间,超时没返回结果就会报异常,捕获异常,然后调用cancel方法

解决方案 »

  1.   


    你是说这样么?for(...){
    futures.add( pool.submit(r););
    }
    for( Future<?> future : futures){
    try {   
    future.get(5, TimeUnit.SECONDS);
    } catch (InterruptedException e) {
    System.out.println("线程中断出错。");
    future.cancel(true);// 中断执行此任务的线程   
    } catch (ExecutionException e) {   
    System.out.println("线程服务出错。");
    future.cancel(true);// 中断执行此任务的线程   
    } catch (TimeoutException e) {// 超时异常   
    System.out.println("超时。");   
    future.cancel(true);// 中断执行此任务的线程   
    }
    }
    在我这里这么做,好像线程并没有同步运行。
      

  2.   


    你是说这样么?for(...){
    futures.add( pool.submit(r););
    }
    for( Future<?> future : futures){
    try {   
    future.get(5, TimeUnit.SECONDS);
    } catch (InterruptedException e) {
    System.out.println("线程中断出错。");
    future.cancel(true);// 中断执行此任务的线程   
    } catch (ExecutionException e) {   
    System.out.println("线程服务出错。");
    future.cancel(true);// 中断执行此任务的线程   
    } catch (TimeoutException e) {// 超时异常   
    System.out.println("超时。");   
    future.cancel(true);// 中断执行此任务的线程   
    }
    }
    在我这里这么做,好像线程并没有同步运行。
    差不多就这个意思