`
01jiangwei01
  • 浏览: 541654 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

主线程等待10秒钟,无应答返回(一)

    博客分类:
  • java
 
阅读更多
 
场景需求:
其他应用向我们的应用A发来请求,如果应用A10秒内无处理结果则返回数据未处理完成。
工作简化:
主线程等待10秒钟,如果子线程没有完成工作,则日志标识。
下面是代码实现:
import java.util.Random;
import java.util.concurrent.Callable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class PrivateAccount implements Callable<Integer> {
 
 protected static   final  Logger logger = LoggerFactory.getLogger(PrivateAccount.class); 
 
 long timework = 1;
 
 
 public PrivateAccount(long timework) {
  super();
  this.timework = timework;
 }
 public Integer call() throws Exception {
  //sleep单位毫秒
  logger.info("这里是子线程,开始工作,工作需要大约{}秒钟",this.timework);
  Thread.sleep(this.timework*1000);  
  Integer  totalMoney = new Integer(new Random().nextInt(10000));  
  logger.info("这里是子线程,工作完成");
        return  totalMoney ; 
 } 
}

 


import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
 * 要求:
 *  实现一种效果测试。主线程等待工作线程完成任务并获取结果,如果1分钟内没有获取结果,则告知获取失败
 * 实现方式:
 * FutureTask
 */
public class Demo1Main {
 protected static   final  Logger logger = LoggerFactory.getLogger(Demo1Main.class); 
 public static void main(String[] args) {
  //设定子线程工作时间
  long  subThreadWorkTime = 9;
        Callable<Integer> pAccount = new PrivateAccount(subThreadWorkTime); 
        //注意使用类:FutureTask
        FutureTask<Integer> futureTask = new FutureTask<Integer>(pAccount);  
        // 使用futureTask创建一个线程  
        Thread pAccountThread = new Thread(futureTask);
        long  timeout = 8 ;
        logger.info("主线程:设定等待时间是:{}秒" , timeout);
        
        pAccountThread.start();  
        try {
   Integer result =  futureTask.get(timeout, TimeUnit.SECONDS);
   logger.info("{}秒钟工作完成,响应结果是:{}",timeout,result);  
  } catch (InterruptedException | ExecutionException | TimeoutException e1) {
   if (e1 instanceof  TimeoutException){
    logger.info("{}秒钟没有响应结果,系统退出",timeout);  
   }else{
     
    e1.printStackTrace();
   }
   pAccountThread.interrupt();
   
  }
 }
}




 

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    win10无人值守应答文件.rar

    此文件是WDS部署环境下使用的,适合中小型企业部署使用。

    STM32超时无法应答

    ### STM32超时无法应答的解决方法 在嵌入式开发领域,尤其是使用STM32微控制器的过程中,开发者可能会遇到无法下载程序的情况。这种现象通常表现为:当尝试通过串口或USB接口向STM32芯片下载固件时,出现“超时”或...

    温湿度传感器SHT30 驱动程序 去掉了器件检测不到的应答等待,亲测可用

    描述中的“去掉了器件检测不到的应答等待”意味着在驱动程序中,开发人员可能已经优化了错误处理部分,移除了当传感器未正确响应时的等待时间,提高了程序效率。这可能是因为SHT30在特定情况下可能会短暂无响应,而...

    win10专业版Autounattend自动应答文件GPT格式自动分区

    注意:该文件执行时会清空磁盘所有数据,请先备份磁盘所有文件!!! 适用于windwos10专业版,将Autounattend.xml文件刻入到Windows原始镜像根目录内,可实现windows全自动安装。

    XP自动应答文件

    Windows安装光盘中有一个制作自动应答文件的工具,利用它非常方便。我们在安装Windows XP时,一直守在电脑旁边,等待着输入各个配置信息。如果我们借助自动应答文件来自动配置这些信息,我们就可以在安装Windows XP...

    windows10无人值守安装

    Windows 10 无人值守安装使用 ADK 制作应答文件 Windows 10 的自动化安装是指在安装过程中,不需要人工干预地完成安装的过程。使用 ADK 工具可以制作应答文件,从而实现无人值守的批量化安装。下面是相关的知识点:...

    VB接受无应答机制的一大串数据

    如果一个设备无应答机制的发送一大串数据,可以根据数据的一些规律来中断设置COMM的INPUTLEN属性和REshould属性来处理数据存储

    一种“UE无应答”导致RRC建立失败无线接通率低问题的分析优化.doc

    本文将深入探讨一个特定的问题,即“UE无应答”导致RRC建立失败,从而影响无线接通率低的问题,以及如何对其进行分析和优化。 一、问题描述 问题发生在名为“大磡怡华 F-HLH-3”的小区,其“无线接通率(%)”在97.00...

    野人家园网络/串口通信调试助手-自动应答-用户手册.pdf

    【野人家园网络/串口通信调试助手-自动应答-用户手册】是针对网络调试助手、串口调试助手和通信调试助手的一款实用工具,它提供了自动应答功能,能够实时响应接收到的指令和数据,并按照用户预先设定的规则发送对应...

    ARP请求应答C++MFC界面

    收到请求的设备会返回一个ARP应答,包含自己的MAC地址。这个过程被称为ARP解析。 在本项目中,MFC库被用作C++应用程序开发的框架,提供了丰富的用户界面组件和事件处理机制。MFC基于面向对象的编程思想,使得开发者...

    HTTP应答码

    当请求已成功被服务器接收、理解并接受时,会返回2XX系列的应答码。其中最常见的是: - **200 OK**:标准的响应成功状态,表示请求已成功,且响应体中包含所请求的数据。 - **201 Created**:请求成功并且一个新的...

    H248协议附加业务--无应答前转.pdf

    本文将深入探讨H248协议中的一个附加业务——无应答前转,以及相关的交互过程。 无应答前转是一种高级语音业务,当呼叫发起方拨打的号码无人接听时,系统会自动将呼叫转移到预设的其他号码上。这一功能的实现依赖于...

    用socket编程,做一个自动应答的服务端和相应的客户端。编译运行。并解释所做的程序的原理与功能

    4. 接受连接:使用`accept`函数接受客户端的连接请求,并返回一个新的套接字用于与客户端进行通信。 5. 处理请求:使用`recv`函数接收客户端发来的请求,并对其进行处理。 6. 发送响应:使用`send`函数将处理结果...

    美萍网管大师自动应答

    通过实时监控用户的网络活动,系统可以判断用户是否在线,结合设定的离线规则(如超时无操作、用户点击“下机”按钮等)触发自动应答流程。同时,软件还支持自定义设置,如结账条件、下机延迟时间等,以适应不同网吧...

    Sip协议 SIP协议应答码

    SIP (Session Initiation Protocol) 是一种用于控制多媒体通信会话(如语音和视频通话)的信令协议。SIP 协议应答码是其通信过程中用来指示请求处理状态的关键部分,它沿袭并扩展了 HTTP/1.1 的应答码体系,同时也...

    技术要求应答表.pdf

    技术要求应答表.pdf

    某型空管应答机高度源模拟器电路设计

    该模拟器用于在无真实高度源的环境下测试空管应答机接收和处理高度信号的能力。以下是详细的知识点解析: 1. **空管应答机系统**:空管应答机是一种全固态化的A/C模式设备,用于空中交通管制。它与地面二次雷达站...

    应答器及原理PPT课件.pptx

    应答器,又称为信标,是轨道交通通信系统中的关键组件,主要负责向列车传输重要的行车信息。应答器分为两种类型:有源应答器和无源应答器。 无源应答器不自带电源,其工作原理依赖于车载查询器发射的高频信号。当...

    WDS部署服务(LTSC-2021-64BIT)自动应答文件(BIOS/UEFI)

    WDS部署服务,无人值守应答文件 区分bios和uefi 1.BIOS启动模式和硬盘分区格式如果不一致,安装的时候会出现报错,这是很多系统装不上的主要原因 2.Legacy是传统的BIOS启动引导,对应的磁盘分区格式是MBR,UEFI引导...

Global site tag (gtag.js) - Google Analytics