`
落叶换新叶
  • 浏览: 25568 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

callback,future使用

阅读更多
import java.util.concurrent.*;

public class FutureTaskTest {

    public static void main(String[] args) {

        // 线程1
        Callable<String> tempCall1 = new Callable<String>(){
            @Override
            public String call() throws Exception {
                Thread.sleep(5000);
                String back = "success";
                System.out.println("线程1执行了");
                return back;
            }
        };
        // 线程2
        Callable<String> tempCall2 = new Callable<String>() {
            @Override
            public String call() throws Exception {
                Thread.sleep(5000);
                System.out.println("线程2执行了");
                return "fail";
            }
        };

        ExecutorService executorService = Executors.newFixedThreadPool(10);
        Future<String> future1 = executorService.submit(tempCall1);
        System.out.println("线程的状态是否取消:"+future1.isCancelled());
        String result1 = "";
        try {
            result1 = future1.get(4000, TimeUnit.MILLISECONDS);
        }catch (TimeoutException e) {
            System.out.println("线程1超时");
            future1.cancel(true);
        } catch (InterruptedException e) {
            System.out.println("线程1执行超时");
            e.printStackTrace();
        }catch(Exception e) {
            System.out.println("线程1执行异常");
            e.printStackTrace();
        }

        System.out.println("线程1返回的结果:"+result1);

        Future<String> future2 = executorService.submit(tempCall2);
        String result2 = "";
        try {
            result2 = future2.get(6000,TimeUnit.MILLISECONDS);
        }catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println("线程2返回的结果:"+result2);

        executorService.shutdown();
    }
}

 

1
0
分享到:
评论

相关推荐

    使用future处理并发1

    `Future`的`.done()`方法是非阻塞的,可以检查操作是否已完成,而`.add_done_callback()`方法则用于注册一个回调函数,当未来完成时调用该函数。 `.result()`方法用于获取`Future`的结果。在`Future`完成执行后,它...

    future-1.0.0.tar.gz

    在Python 3.2及以上版本中,`Future`对象允许开发者通过调用`.result()`或`.exception()`方法来获取操作的结果,或者使用`.add_done_callback()`来添加一个回调函数,当操作完成时,这个函数会被调用。此外,`Future...

    future-0.17.0.tar.gz

    "Future" 是一个在Python编程语言中广泛使用的库,它主要设计用于处理异步操作,尤其是在网络编程和并发处理中。0.17.0是这个库的一个版本号,这通常意味着开发者对原有的功能进行了改进、修复了已知的bug,并可能...

    了解JAVA Future类

    Future表示一个可能还没有完成的异步任务的结果,针对这个结果可以添加Callback以便在任务执行成功或失败后作出相应的操作。 在并发编程中,我们经常用到非阻塞的模型,在之前的多线程的三种实现中,不管是继承...

    pacebox-netty 是一个基于netty和pacebox-core封装的便捷工具包.rar

    Hermes是一款基于Netty的可以支持百万级别的并发连接的高性能、高度可扩展的的网络通讯框架,它参考了dubbo和sofa-bolt的...callback future 支持客户端/服务端异步化编程 超时控制 使用SPI扩展点加载,扩展性强 鉴权

    python中利用Future对象回调别的函数示例代码

    前言 本文主要给大家介绍了关于python中用Future对象回调别的...def callback(future, n): print('{}: future done: {}'.format(n, future.result())) async def register_callbacks(all_done): print('registering

    Future-Elements-Selector:使用不带jQuery的jQuery的Future Elements Selector的替代品

    未来元素选择器使用不带jQuery的jQuery的Future Elements Selector的替代品。 ###用法在您的项目中包括future.js: &lt; script src =" ./future.js " &gt; &lt;/ script &gt; 传递参数以绑定功能: bind ( ...

    Java异步调用转同步方法实例详解

    callback方法中,我们不需要做任何事情,因为Future对象已经处理了异步调用返回结果,而在call方法中,我们使用get方法来等待异步调用返回结果。 4. 使用CountDownLatch CountDownLatch是一种同步工具,通过使用...

    python-callback-sample:Python + Flask +服务员+后台任务

    python-callback-sample Python + Flask +服务生+后台任务安装并执行源service_install.sh取消服务源service_uninstall.shTODOS: 使用asyncio处理子流程: ://docs.python.org/pt-br/3.7/library/asyncio-...

    数字信号处理在双音多频拨号系统中的应用

    % KEY1('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in KEY1.M with the given input arguments. % % KEY1('Property','Value',...) creates a new KEY1 or raises the %...

    HttpAsyncClient异步http工具包

    Future&lt;HttpResponse&gt; future = httpAsyncClient.execute(request, callback); ``` 4. **处理响应**: 可以通过`Future`对象获取响应,或者注册回调函数处理响应。 ```java HttpResponse response = future.get(); ...

    Java回调函数详解共6页.pdf.zip

    例如,我们可以将`Callback`接口转换为一个函数式接口,并使用lambda表达式来定义回调: ```java @FunctionalInterface public interface Callback { void onCalculationFinished(int result); } // 使用lambda...

    异步DAOzebra-dao.zip

    zebra-dao是在mybatis基础上进一步封装的异步DAO,同时它也支持分页功能... 支持Callback和Future两种异步化方式 支持分页功能 其他功能的使用方式和mybatis一致 标签:zebra

    回调函数java.rar

    回调函数在Java的多线程编程中也发挥着重要作用,例如在`Future.get()`方法中,用于等待异步任务完成并获取结果。此外,在诸如Servlet、Swing和JavaFX等GUI库中,回调函数用于响应用户的交互事件。 然而,回调函数...

    Python concurrent.futures模块使用实例

    例如,`f.done()`检查任务是否完成,而`f.add_done_callback(callback)`可以注册一个回调函数,在任务完成时自动调用。 ### 5. 异常处理 当异步任务抛出异常时,可以通过`Future`对象的`exception()`方法获取异常...

    javafuture源码-demo-java-completablefuture:“带有CompletableFuture的Java异步编程”

    callback hell”)的混乱。 此API也是Java中Future / Promise并发构造的实现。 从Java 5开始,有一个用于异步编程的简单得多的API: Future接口及其基础实现FutureTask类。 Future接口表示异步计算的结果,并且只有...

    在MatlabGUI里面启动或者暂停Simulink模型-sysstop_new.m

    第一步:创建你自己的Simulink模型,这个不用我讲吧,我们使用以下模型做演示: start_and_stop.mdl 第二步:创建自己的GUI, 这个论坛里也有例子,我们使用以下文件。 start_...

Global site tag (gtag.js) - Google Analytics