java调用方法超时设置_设置调用方法的超时时间

在工作中,遇到这样一个需求,我要做一个业务,要验证一下现有的数据是否正确,但这个验证又不是必须的,只是说如果这里验证不通过,后面流程就可以不走了,但是如果这里没有验证到,后面也会有验证。也就是说不影响主流程,算得上是一个优化吧。比如我要查询一个东西,但是这个时间不能超过1秒。

在网上查了一下,基本上都是异步执行,有两个线程来做。我查到有两种方法。

第一种 独立成一个类

代码如下:

(1)、FuncTimeOut类

///

///超时设置类///

public classFuncTimeOut

{///

///信号量///

private ManualResetEvent manu = new ManualResetEvent(false);///

///是否接受到信号///

private boolisgetSignal;///

///设置超时时间///

private inttimeout;///

///要委托调用的方法的一个委托///

private ActionfuncNeedRun;///

///构造函数///

/// 委托

/// 超时时间

public FuncTimeOut(Action action, inttimeout)

{this.funcNeedRun =action;this.timeout =timeout;

}///

///执行方法///

/// 参数

public void Execute(intparam)

{

Action tempAction = this.CombineActionAndManuset;var r = tempAction.BeginInvoke(param, this.MyAsynCallback, null);this.isgetSignal = this.manu.WaitOne(this.timeout);if (this.isgetSignal == true)

{

Console.WriteLine("未超时.");

Console.WriteLine("ThreadName:" +Thread.CurrentThread.Name);

}else{

Console.WriteL

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值