开发者社区> 问答> 正文

多线程处理超时,多线程调用? 400 报错

多线程处理超时,多线程调用? 400 报错 import java.util.concurrent.Callable;  
import java.util.concurrent.ExecutionException;  
import java.util.concurrent.ExecutorService;  
import java.util.concurrent.Executors;  
import java.util.concurrent.Future;  
import java.util.concurrent.TimeUnit;  
import java.util.concurrent.TimeoutException;  
  
public class TimeOut {  
    public static void main(String[] args){  
        int timeout = 2; //秒.  
        ExecutorService executor = Executors.newSingleThreadExecutor();  
        Boolean result = false;     
        Future<Boolean> future = executor.submit(new MyJob("请求参数"));// 将任务提交到线程池中     
        try {     
            result = future.get(timeout*1000, TimeUnit.MILLISECONDS);// 设定在200毫秒的时间内完成   
            System.out.println(result);  
        } 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);// 中断执行此任务的线程     
        }finally{  
            System.out.println("线程服务关闭。");  
            executor.shutdown();  
        }  
    }  
      
    static class MyJob implements Callable<Boolean> {    
        private String t;  
        public MyJob(String temp){  
            this.t= temp;  
        }  
        public Boolean call() {     
            for(int i=0;i<999999999;i++){  
                if(i==999999997){  
                    System.out.println(t);  
                }  
                if (Thread.interrupted()){ //很重要  
                    return false;     
                }  
            }   
            System.out.println("继续执行..........");     
            return true;     
        }     
    }   




不知道有没有在多线程中试过,我用Future试多线程,就会出很多问题,比如:设置的超时时间是所有任务要执行的时间,不是每个线程的超时时间!求解答~,怎么样处理 才可以引入多线程来处理超时

展开
收起
爱吃鱼的程序员 2020-06-03 11:45:14 599 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    等高手解答######你是要 awaitTermination这个方法吗?

    2020-06-03 11:45:25
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
多IO线程优化版 立即下载
多线程 立即下载
fibjs 模块重构从回调到协程 立即下载

相关实验场景

更多