0 0

超时多线程处理问题0

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试多线程,就会出很多问题,比如:设置的超时时间是所有任务要执行的时间,不是每个线程的超时时间!求解答~,怎么样处理 才可以引入多线程来处理
2014年9月18日 09:49

1个答案 按时间排序 按投票排序

0 0

ExecutorService executor = Executors.newSingleThreadExecutor();
这个是创建一个只有一个线程的线程池,意味着从这获取线程干活,那么只能等上一个干完了 再开始下一个。

多线程调用,当然是 多处并发调用了,那么自然就构成并发任务了。 可以简单的 在主线程 用for循环 提交多个任务,自然就是 多个线程并发了,因为提交任务很快,而每个提交的任务需要点时间才能完成。

2014年9月18日 17:29

相关推荐

    多线程管理框架支持超时退出任务回调处理

    作用:模仿线程池操作,管理多线程任务,超时,以及完成任务的回调。如果有bug自行处理,服务器挂机一天跑了三千万个线程投递没有出现什么异常。资源作者:。流云思水。资源界面:。资源下载:。

    Java线程超时监控

    讲解有关Java中多线程运行时针对单个线程的执行超时监控机制,用于处理单个线程执行控制

    qtconcurrent 多线程并发处理

    qtconcurrent 多线程并发处理应用demo。开发环境Qt5.9.4

    线程超时死掉

    解决线程的死掉问题和超时问题特别好使,在Java中,如果需要设定代码执行的最长时间,即超时,可以用Java线程池ExecutorService类配合Future接口来实现。 Future接口是Java标准API的一部分,在java.util.concurrent...

    .net c#线程超时解决方案

    .net C#线程超时的解决方案,使用的时候在被调线程入口调用一下这个方法就可以。更多详细代码见附件 Report.RegisterThread(Report.GetCurrentWin32ThreadID(),Thread.CurrentThread); #region 获取当取线程的...

    C#中的多线程超时处理实践方案

    主要介绍了C#中的多线程超时处理实践方案,非常不错,具有参考借鉴价值,需要的朋友可以参考下

    PyQt5中多线程模块QThread和线程池ThreadPoolExecutor解决PyQt5界面程序执行比较耗时操作无响应问题

    1.资源简介:PyQt5中使用多线程模块QThread解决了PyQt5界面程序执行比较耗时操作时,程序卡顿出现的无响应以及界面输出无法实时显示的问题,采用线程池ThreadPoolExecutor解决了ping多个IP多任务耗时问题。...

    基于boost::asio的http server3修改的echo服务器,有多线程,多侦听端口,超时处理等

    基于boost::asio的http server3修改的echo服务器,有多线程,多侦听端口,超时处理等

    C++封装类CWSocket(多线程 非阻塞)

    C++封装类CWSocket(多线程 非阻塞)vc mfc 一般直接添加就可用,还有超时处理,强大。

    线程任务后台处理

    大数据保存时会存在线程等待,只有全部保存后才能往下执行,使用线程委托任务让流程先走完,数据慢慢保存,提高页面响应速度

    使用QNetworkAssessManager下载文件,支持断点续传和超时处理

    1.下载进度条展示,支持暂停,停止功能 2.显示下载/剩余大小,剩余时间,下载速度 3.多线程下载,不阻塞界面线程 4.文件断点续传下载 5.下载请求超时的处理 环境VS2015 + win10 64位

    C#基于异步事件回调多线程容器

    多线程应该采用消息中心来交换数据,这样就规避了线程同步交互,等待,阻塞等等,全部是异步调用,全部是接收消息工作,然后产生消息,线程间没有耦合,消息中心有很多成熟的方案如RabbitMQ, Redis(里面有简单的...

    .net 等待超时处理的demo

    .怎么删掉啊,这个demo有点问题 新的版本请见blog: blog.csdn.net/fuadam

    多线程代码测试DSL框架Awaitility.zip

    测试异步系统很难,它不仅需要处理线程,超时和并发问题,代码测试意图也需在此类细节下隐藏。但 Awaitility 可让您简明传达对异步系统的期望,且操作手册简单易懂,如:@Testpublic void updatesCustomerStatus...

    个人总结的深入java多线程开发

    看完《think in java》多线程章节,自己写的多线程文档,还结合了其他的相关网络资料。 线程 一. 线程池 1)为什么要使用线程池 2 2)一个具有线程池的工作队列 3 3)使用线程池的风险: 4 4)有效使用线程池的原则 5...

    一个基于IO::Poll和threads多线程的Echo服务程序

    ###################################################################### 下面的程序是一个基于IO::Poll和threads多线程的Echo服务程序,### 在这个程序中实现了对于Dos方式攻击的防御以及对连接超时的处理#######...

    易语言-易语言多线程防崩溃例程

    2、用于改动核心程序就可用于自己的功能,多线程控制模块已经测试好 3、保证有任务时启用的线程处于工作状态,完成任务的线程会自动分配的新的任务,不用等待其他线程 4、可以结束超时的任务,并且设定重试次数 5、...

    pebble:多线程和处理糖果

    result () # blocks until results are ready 以十秒的超时时间运行一个函数并处理错误。 from pebble import concurrentfrom concurrent . futures import TimeoutError@ concurrent . process

    linux socket 多线程代码

    linux下c写的几个socket代码,包括各个方面的介绍,超时机制,新号处理机制都有。

Global site tag (gtag.js) - Google Analytics