`

猎狗方式调用接口

    博客分类:
  • java
 
阅读更多

package boce.hit.dog;

import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;

public class FuncCourser {
private FuncCourser() {
}

private static ExecutorService executor = Executors
.newCachedThreadPool(new ThreadFactory() {
int nCount = 0;

public Thread newThread(Runnable task) {
nCount++;
Thread invokeThread = new Thread(task);
invokeThread.setName("Invoker-thread-" + nCount);
System.out.println("thread::"+nCount);
invokeThread.setDaemon(true);
return invokeThread;
}
});

/****
* 目标方法无返回值使用该方法调用

* @param task
*            调用代码
* @param unit
*            超时时间类
* @param timeout
*            时间
* @throws TimeoutException
*             调用超过指定的时间抛出此异常
*/
public static void call(Runnable task, TimeUnit unit, long timeout)
throws TimeoutException {
Future<?> futureResult = executor.submit(task);
try {
futureResult.get(timeout, unit);
} catch (Exception e) {
if (e instanceof TimeoutException) {
throw new TimeoutException("invoke timeout!");
}
throw new RuntimeException(e);
}

}

/*****
* 目标方法有返回值时使用该方法调用

* @param <T>
* @param task
*            调用代码
* @param unit
*            超时时间类型
* @param timeout
*            时间
* @return 被调用函数的返回值
* @throws TimeoutException
*             调用超过指定时间时抛出此异常
*/
public static <T> T call(Callable<?> task, TimeUnit unit, long timeout)
throws TimeoutException {
Future<?> futureResult = executor.submit(task);
Object callRet = null;
try {
callRet = futureResult.get(timeout, unit);
} catch (Exception e) {
if (e instanceof TimeoutException) {
throw new TimeoutException("invoke timeout!");
}
throw new RuntimeException(e);
}
return (T) callRet;
}




public static <T> T callRunnable(Runnable task, TimeUnit unit, long timeout)
throws TimeoutException {
Object result ="sucess";
Object obj = null;
Future<?> futureResult = executor.submit(task,result);
try {
obj = futureResult.get(timeout, unit);
System.out.println(obj+"====="+result);
} catch (Exception e) {
if (e instanceof TimeoutException) {
throw new TimeoutException("invoke timeout!");
}
throw new RuntimeException(e);
}
return (T)obj;

}

public static void main(String[] args) {

// //调用程序
// Callable<String> task = new Callable<String>(){
// @Override
// public String call() throws Exception {
// System.out.println("================="+Thread.currentThread().getName());
// Thread.sleep(2500);
// return "back";
// }
//
// };
//
// try {
//     for(int i=0;i<1;i++){
//     System.out.println(""+i);
// String str = FuncCourser.call(task, TimeUnit.SECONDS, 2);
// System.out.println("show:::"+str);
//     }
// } catch (TimeoutException e) {
// e.printStackTrace();
// }



Runnable ru = new Runnable(){
@Override
public void run() {
try {
Thread.sleep(2500);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("test123456");
}
};


try {
    for(int i=0;i<1;i++){
    System.out.println(""+i);
System.out.println(FuncCourser.callRunnable(ru, TimeUnit.SECONDS, 3));
    }
} catch (TimeoutException e) {
e.printStackTrace();
}




}

}
分享到:
评论

相关推荐

    猎狗demo测试

    在IT行业中,"猎狗demo测试"可能是指一个专门用于测试黑盒调用方法功能的示例项目。这个工具类的目的是验证不同组件或者服务之间的接口调用是否能正常工作,确保系统的稳定性和可靠性。"黑盒测试"是一种软件测试方法...

    养猎犬心得精选.doc

    "养猎犬心得精选.doc" 本文档探讨了养猎犬的重要心得,涵盖了选择猎犬的要素、国外和国内猎犬的特点、实战后代的成材率、价格与质量的关系等方面。 首先,作者指出,不管是什么品种的狗,只要存在就有其存在价值。...

    MATLAB实验报告(猎狗追兔子的问题).pdf

    MATLAB 实验报告(猎狗追兔子的问题) 本实验报告主要介绍了使用 MATLAB 软件来解决微分方程的初值问题。通过建立简单微分方程数学模型,模拟了猎狗追兔子的问题。实验的目的是为了学习使用 MATLAB 软件求解微分...

    管理大师德鲁克教你怎样给猎狗分骨头.doc

    这种方式旨在稳定员工的基本需求,同时鼓励他们追求更高的绩效。 8. **岗位差异与激励设计**:不同岗位的猎狗在分骨头时出现争议,表明管理者需考虑岗位差异,制定符合各个角色特点的激励政策。 9. **信任与监督**...

    bushound“猎犬”

    【“bushound“猎犬”】:在IT领域,BusHound是PeriSoft公司开发的一款强大的总线分析工具,它的名字来源于英文单词“hound”,直译为“猎犬”,寓意这款软件像猎犬一样灵敏,能够精确地捕捉到PC机上总线数据包的每...

    数学建模_猎狗追兔子问题.doc

    数学建模_猎狗追兔子问题.doc

    代理猎狗 proxygo

    代理猎狗 2.6.25.绿色版,代理吸附,小巧,效率高,可自由添加吸附地址

    猎犬RSS订阅源系统 Ver 2.0[RSSfeed.rar]-精品源代码

    《猎犬RSS订阅源系统 Ver 2.0》是一款基于源代码开发的系统,专用于RSS(Really Simple Syndication)订阅服务。RSS是一种互联网内容发布格式,它允许用户通过RSS阅读器或聚合器获取网站更新,无需直接访问网站。本...

    代理猎狗,在线使用代理

    代理猎狗,很好的代理工具,在线使用,更换代理等。

    数学建模期末论文_猎狗追兔问题.doc

    数学建模期末论文_猎狗追兔问题.doc 本文是关于数学建模期末论文的学生个人信息模板,内容包括个人信息、论文评分标准与结果、问题分析与假设、模型建立与求解、求解结果格式规行文表述总评分说明等。 论文的主要...

    企业管理猎狗效应.doc

    企业管理猎狗效应 企业管理中,猎狗效应是指由于奖惩措施的不当设计导致员工的工作动机和积极性下降的问题。本文通过一个故事来说明猎狗效应的出现和解决。 故事讲述了一个猎人和他的猎狗们之间的互动。猎人为了...

    养猎犬心得doc.doc

    养猎犬的心得主要涉及了几个关键点:犬种选择、品种优缺点、实战与繁殖、价格与品质的关系。下面将详细阐述这些方面。 首先,犬种的选择并不是简单地追求最好,而是要根据实际需求来定。每个犬种都有其独特的特点和...

    MATLAB实验报告猎狗追兔子的问题.docx

    【MATLAB实验报告——猎狗追兔子的问题】 本次MATLAB实验旨在通过解决一个经典问题——猎狗追兔子,来学习和掌握使用MATLAB求解微分方程的初值问题,建立简单微分方程数学模型,以及了解计算机数据仿真和模拟的基本...

    2021第七条猎狗读书心得.docx

    赤利是一条英勇、忠诚、善良的猎犬,它在狩猎中表现出非凡的勇气和智慧,但因为一次误会,被召盘巴误认为临阵脱逃,遭到了无情的惩罚。 在一次捕猎野猪的过程中,召盘巴因为踩到蛇蛋,面临眼镜蛇的攻击,而此时的赤...

    CIM猎犬对POP3服务器验证的轮询间隔-Cisco.pdf

    CIM猎犬对POP3服务器验证的轮询间隔-Cisco 本文档介绍了如何验证和更改CIM猎犬对POP3服务器的轮询间隔。CIM猎犬是一个电子邮件收集工具,用于从POP3服务器上检索电子邮件。为了实现这个功能,CIM猎犬需要连接到POP3...

    第七条猎狗读后感汇总

    在动物的世界里,生存的竞争和对群体的归属感同样强烈,但它们的情感表达方式往往更加直接和真诚。赤利的故事提醒我们,不应轻易误解或评判动物的行为,因为它们可能有着我们无法理解的动机和牺牲精神。 同时,《第...

    猎狗与兔子---人力资源管理的目标是什么?(doc 5).doc

    如同猎狗与兔子的故事所示,明确且具有挑战性的目标能够极大地激发员工的动力。人力资源部门需要协助企业和员工设定合理的目标,这些目标应具有SMART原则——具体(Specific)、可衡量(Measurable)、可达成(Achievable...

    完美版课件激励分析-猎狗的故事一个很经典的案例(ppt-30).ppt

    这种持续激励方式鼓励长期贡献,但依然未能解决老猎狗的问题。 5. **职业发展与保障**:猎狗担心随着年龄增长无法捉到兔子时的待遇问题,反映了员工对职业发展和退休保障的需求。企业应考虑长期福利计划,消除员工...

    激励分析-猎狗的故事一个很经典的案例(_30).pptx

    在这个激励分析的经典案例——“猎狗的故事”中,主要探讨了激励机制在团队管理中的重要性和影响。故事的主人公是一位猎人,他通过不断调整激励政策来提高猎狗捕猎的效率和质量。 最初,猎人用一顿饭作为猎狗捕猎的...

Global site tag (gtag.js) - Google Analytics