美文网首页Java those things
JAVA 线程 Runable 和 Callable 以及 Fu

JAVA 线程 Runable 和 Callable 以及 Fu

作者: M_ENG | 来源:发表于2018-03-21 13:54 被阅读28次

    Runable

    线程执行无返回值

    class TaskWithResult implements Runable

    Callable

    线程执行有返回值   

    class TaskWithResult implements Callable<T>


    Future(未来的意思)

    Future.get() 用来获取线程的结果

    Future对象本身可以看作是一个显式的引用,一个对异步处理结果的引用

    当线程还没有执行结束、得不到返回结果时、Future.get()将会阻塞(block)

    (当另外一个线程需要使用某一个线程的结果时,可以通过Future引用的get()方法去获得,如果结果还未出来,调用此方法的线程被block,直到结果出来)

    如果无法一直等待下去、可以设置超时时间 Future.get(long timeout, TimeUnit unit)

    结合线程池使用

    executorService.execute(Runable run); // 没有返回结果 

    executorService.submit(Runable run); // 返回future.get() 永远返回null  表示成功 

    executorService.submit(Callable run); // 有返回结果 future.get() 、有异常抛异常


    纯属个人理解   

    不理解或者是有什么错误的地方、欢迎留言并会及时回复和改正的

    相关文章

      网友评论

        本文标题:JAVA 线程 Runable 和 Callable 以及 Fu

        本文链接:https://www.haomeiwen.com/subject/oshgqftx.html