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

相关推荐

    libevent多线程处理

    本文将深入探讨如何在多线程环境中使用Libevent进行事件处理,并分享一个基于Libevent的多线程实现案例。 首先,理解Libevent的核心机制至关重要。Libevent提供了一个事件基础结构,它能够将来自不同来源的事件(如...

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

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

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

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

    Java线程超时监控

    在设计多线程程序时,我们还需要考虑如何优雅地处理超时。例如,确保超时的线程释放了所有已占用的资源,如数据库连接、锁等。此外,对于长时间运行的任务,可以考虑采用中断机制,使任务能够定期检查是否被中断,以...

    QT中sqlite多线程操作4个注意问题

    在多线程环境下使用`QsqlQuery`变量时,有时会遇到奇怪的问题,即使按照上述方法进行了处理,程序运行一段时间后仍可能出现数据库死锁或者异常关闭的情况。此时,可以尝试通过限制`QsqlQuery`变量的作用域来改善这一...

    PHP多线程图片处理

    在PHP中实现多线程处理图片是一项挑战,因为PHP本身并不支持原生的多线程。但是,通过一些技巧和扩展,我们可以模拟实现多线程的功能。本篇将深入探讨如何利用CURL扩展来实现这一目标,以及在这个过程中可能遇到的...

    鱼刺多线程注册源码例子(鱼刺多线程稳定框架)

    "鱼刺框架"的稳定特性意味着它在设计时考虑了线程安全性和资源管理,确保在多线程环境下不会出现竞态条件、死锁或其他常见的并发问题。这些特性通常包括锁机制(如互斥量、读写锁)、信号量、条件变量等同步原语,...

    .net c# udp通信,采用多线程处理,消息接收,发送,处理

    在.NET开发环境中,C#语言提供了丰富的库支持来实现UDP通信和多线程处理。UDP(User Datagram Protocol)是一种无连接的、不可靠的传输层协议,常用于实时数据传输,如音频、视频流等,因为其高效且不保证顺序到达。...

    易语言多线程访问网页

    3. **多线程同步**:在多线程环境中,数据共享可能会引发竞态条件和死锁问题。易语言提供了“信号量”、“事件”等同步机制,确保线程间安全的数据交互。例如,当一个线程正在处理数据时,其他线程需要等待,直到...

    Linux系统下的多线程编程入门.pdf

    在Linux系统下进行多线程编程是开发高效并发应用程序...理解和掌握线程创建、同步、通信和问题处理,是编写高效、可靠的多线程程序的基础。通过不断实践和学习,我们可以驾驭这一强大的工具,提升软件性能和用户体验。

    百度知道多线程采集问题答案

    本主题聚焦于“百度知道”问答平台的多线程采集问题及其解决方案。百度知道作为一个海量信息的平台,提供了丰富的用户问答数据,对于研究用户需求、市场趋势以及知识挖掘具有极大的价值。 首先,我们要理解什么是多...

    CURL多线程类库

    3. **错误处理**:处理请求过程中可能出现的错误,如网络连接问题、超时等。 4. **结果回调**:如何定义回调函数来处理每个请求完成后的返回数据。 5. **线程同步**:如何确保所有线程执行完毕后再进行下一步操作。 ...

    qtconcurrent 多线程并发处理

    在编程领域,多线程并发处理是提升程序执行效率的关键技术之一。Qt库提供了一个强大的模块——qtconcurrent,使得开发者能够轻松地在Qt应用程序中实现多线程并行计算。本文将深入探讨qtconcurrent模块,以及如何在Qt...

    线程超时死掉

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

    实例讲述多线程的处理机制

    6. **线程安全**:如果一个函数或方法在多线程环境中调用时能正确处理数据一致性问题,那么它就是线程安全的。线程安全编程要求开发者对共享资源的访问进行严格控制,避免出现竞态条件。 7. **线程通信**:线程间...

    多线程多任务下载软件.zip易语言项目例子源码下载

    6. **错误处理和异常恢复**:在多线程多任务下载中,错误处理和异常恢复是必不可少的。例如,某个线程在下载过程中出现问题,软件应能自动检测到错误并尝试重新启动该线程或整个任务。易语言提供了异常处理机制,...

    java通过线程控制程序执行超时(新)

    在Java编程中,控制程序执行超时是一项重要的任务,特别是在多线程环境下,我们可能需要确保某个任务不会无限制地运行下去,导致资源耗尽。本文将深入探讨如何使用Java的线程机制来实现程序执行的超时控制,同时也会...

    第一节(多线程通讯代码演示及解决线程安全问题)

    通过学习和理解上述知识点,并结合具体的代码演示(如第一节(多线程通讯代码演示及解决线程安全问题).mp4视频),开发者可以更有效地应对多线程编程中的挑战,编写出高效、稳定的多线程应用程序。

    多线程面试题

    在Java编程领域,多线程是面试中常见且重要的知识点,尤其对于系统设计和高并发处理的岗位至关重要。本文将围绕“多线程面试题”这一主题,深入探讨相关概念、技术及其应用。 1. **线程的概念**:线程是程序执行的...

Global site tag (gtag.js) - Google Analytics