`
huangyongxing310
  • 浏览: 494341 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

Java的Future模式

    博客分类:
  • Java
 
阅读更多
Java的Future模式


runnable与thread的run方法是没有返回值的


thread.join()
join()方法的作用是调用线程等待该线程完成后,才能继续往下运行。
就是调用thread.join()的线程等待thread完成后才能继续往下运行


Callable接口可以看作是Runnable接口的补充,call方法带有返回值,并且可以抛出异常。


get方法:获取计算结果(如果还没计算完,也是必须等待的)
cancel方法:还没计算完,可以取消计算过程
isDone方法:判断是否计算完
isCancelled方法:判断计算是否被取消



put在放入数据时,如果放入数据的key已经存在与Map中,最后放入的数据会覆盖之前存在的数据,
putIfAbsent   如果传入key对应的value已经存在,就返回存在的value,不进行替换。如果不存在,就添加key和value,返回null


ConcurrentHashMap 和 HashMap 思路是差不多的,但是因为它支持并发操作,


在并发的环境下,通过FutureTask作为中间转换,成功实现了让某个方法只被一个线程执行。
https://www.cnblogs.com/cz123/p/7693064.html
当然也可以自己使用线程队列的方式实现


private static final int NEW          = 0; //任务新建和执行中
private static final int COMPLETING   = 1; //任务将要执行完毕
private static final int NORMAL       = 2; //任务正常执行结束
private static final int EXCEPTIONAL  = 3; //任务异常
private static final int CANCELLED    = 4; //任务取消
private static final int INTERRUPTING = 5; //任务线程即将被中断
private static final int INTERRUPTED  = 6; //任务线程已中断


FutureTask 调用run方法不会新建线程,只是普通的方法调用,但会更新FutureTask里的状态,调用get时也会被阻塞的


FutureTask里的get方法也是通过LockSupport来实现线程自我阻塞的
 




https://www.cnblogs.com/cz123/p/7693064.html(彻底理解Java的Future模式)


https://www.cnblogs.com/dolphin0520/p/3949310.html(Java并发编程:Callable、Future和FutureTask)















分享到:
评论

相关推荐

    老生常谈java中的Future模式

    老生常谈java中的Future模式 在 Java 中,Future 模式是一种常用的设计模式,用于处理并发编程中的多线程问题。在这个模式中,线程 A 需要等待线程 B 的结果,但线程 A 不需要一直等待线程 B,可以先拿到一个未来的...

    简单讲解Java的Future编程模式

    Java的Future编程模式是Java并发处理中的核心概念,主要用于处理异步计算的结果。在Java的`java.util.concurrent`包中,`Future`接口...对于处理异步任务和并发编程的Java开发者来说,理解和掌握Future模式至关重要。

    31 凭票取餐—Future模式详解.pdf

    在Java并发编程中,Future模式是一种常见的设计模式,它允许主线程在不阻塞的情况下启动一个异步任务,然后在需要时获取任务的结果。Future模式的灵感来源于现实生活中的场景,如本文开头提到的买午餐和牙膏的例子,...

    java设计模式以及并发编程大全

    Java设计模式和并发编程是Java开发中的两个重要领域,它们对于构建高效、可维护的软件系统至关重要。设计模式是经过时间验证的解决常见问题的最佳实践,而并发编程则是利用多核处理器的优势,提高应用程序的执行效率...

    java多线程设计模式详解(PDF及源码)

    通过程序范例和UML图示来一一解说,书中代码的重要部分加了标注以使读者更加容易理解,再加上图文并茂,对于初学者还是程序设计高手来说,这都是一本学习和认识JAVA设计模式的一本好书。(注意,本资源附带书中源...

    java与模式一书源代码

    《Java与模式》是一本深入探讨Java编程语言与设计模式结合的经典著作,旨在帮助开发者更好地理解和应用面向对象设计原则。源代码是书籍内容的重要组成部分,它提供了实际的示例,让读者可以动手实践,加深对书中理论...

    实战Java高并发程序设计模式高清视频教程.zip

    Java提供了多种并发工具和API,如ExecutorService、Future、Semaphore、CountDownLatch等,帮助开发者有效地管理和协调并发任务。 接着,我们将会学习到Java中的线程和进程概念。线程是程序执行的最小单元,而进程...

    Java多线程设计模式源代码

    在Java编程领域,多线程设计模式是一种至关重要的技术,特别是在构建高效、可扩展和并发的应用程序时。本文将深入探讨Java多线程设计模式及其源代码,旨在帮助开发者理解和应用这些模式,提升代码的并发性能和可维护...

    JAVA设计模式

    5. **Future模式**:Future模式是一种并发设计模式,它提供了异步操作的结果。在Java中,`java.util.concurrent.Future`接口代表一个异步计算的结果,可以检查计算是否完成,取消计算,或者获取计算结果。通常与...

    java多线程设计模式详解.pdf

    3. 同步和通信模式:探讨在多线程程序中,线程间的同步机制和通信手段,如信号量、栅栏、Future模式等。 4. 并发集合和映射的设计模式:介绍在多线程环境中,如何安全地使用集合数据结构,以及专门针对并发访问设计...

    java多线程设计模式详解

    Future模式允许启动一个异步操作,并在后续代码中获取结果。Java的`Future`接口和`Callable`接口结合`ExecutorService`可以实现这一模式,提高程序的响应速度。 八、线程局部变量模式 线程局部变量(`ThreadLocal`)...

    了解JAVA Future类

    Java Future类是一种并发编程中的一种设计模式,Future它代表一个异步计算的结果。Future表示一个可能还没有完成的异步任务的结果,针对这个结果可以添加Callback以便在任务执行成功或失败后作出相应的操作。 在...

    Java并发编程:设计原则与模式(第二版)-3

    《Java并发编程:设计原则与模式(第二版)》是一本深入探讨Java多线程编程技术的权威著作。这本书详细阐述了在Java平台中进行高效并发处理的关键概念、设计原则和实用模式。以下是对该书内容的一些核心知识点的概述...

    java 子线程通过观察者模式通知主线程

    在Java中,`java.util.Observable`类和`java.util.Observer`接口提供了对观察者模式的支持。 1. **`Observable`类**:代表被观察的对象,可以注册多个观察者,并在状态改变时通知它们。`Observable`类提供了`...

    java并发包之Callable和Future

    `Callable`和`Future`的组合是Java并发包中一个强大的工具,它弥补了`Runnable`接口的不足,使得异步编程可以获取到返回值并处理异常。同时,`ExecutorService`作为线程池的实现,为并发编程提供了一种优雅的解决...

    Java并发编程的设计原则与模式

    5. **future模式**:Future接口代表异步计算的结果,可以查询计算是否完成,获取结果,甚至取消计算。CompletableFuture提供更强大的异步编程支持。 四、Java并发工具 1. **CountDownLatch**:用于计数,当计数到达...

    java多线程设计模式源码

    Java多线程设计模式是构建高并发、高性能应用的关键技术之一。这些模式通过优化资源利用、提高程序可读性和可维护性,使并发编程更加高效和安全。以下将详细讲解标题和描述中涉及的一些核心知识点: 1. **线程池...

    java多线程设计模式 (PDF中文版, 附源码)

    第9章 Future——先给您这张提货单 第10章 Two-Phase Termination——快把玩具收拾好,去睡觉吧 第11章 Thread-Specific Storage——每个线程的保管箱 第12章 Active Object——接受异步消息的主动对象 总结 多线程...

    java设计模式

    可以使用线程池、Future、CompletableFuture或者Java 8的流API来实现异步计算。对于报表生成,可以利用如Apache POI库处理Excel,或者使用JasperReports、iText等库生成PDF格式的报表。 总的来说,Java设计模式是...

    Java并发编程:设计原则与模式(Concurrent.Programming.in.Java)(中英版)

    6. **future模式**:用于异步计算结果,`Future`接口和`Callable`接口提供了未来获取结果的机制,如`ExecutorService`的`submit()`方法返回`Future`。 7. **线程局部变量模式**:每个线程拥有独立的变量副本,避免...

Global site tag (gtag.js) - Google Analytics