`
aty
  • 浏览: 36518 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java并发包(一)Callable接口

阅读更多

刚开始使用java线程的时候,使用都是Thread或Runnable接口。最近发现java并发包下,提供了一个与Runnable接口类似的Callable接口。Callable提供了比Runnable更灵活和宽松的call()。

Callable类似于Runnable接口,实现Callable接口的类和实现Runnable的类都是可被其它线程执行的任务

Callable经常和java线程池一起启用:

//创建线程池
 ExecutorService threadPool = Executors.newSingleThreadExecutor();

//TaskCallabl是Callable的实现类
 Future<String> future = threadPool.submit(new TaskCallable());

//获取线程执行结果
 System.out.println(future.get());

threadPool.shutdown();

 

Callable  的使用如下

/**
 * Callable类似于Runnable接口,实现Callable接口的类和实现Runnable的类都是可被其它线程执行的任务。
 * 
 * 当将一个Callable的对象或Runnable对象
 * ,传递给ExecutorService的submit方法,则该对象的call()或run()会自动在一个线程上执行, 并且会返回执行结果Future对象
 * 
 * Callable和Runnable有以下几点不同:<br>
 * (1)、Callable规定的方法是call(),而Runnable规定的方法是run().<br>
 * (2)、Callable的任务执行后可返回值,而Runnable的任务是不能返回值的.<br>
 * (3)、call()方法可抛出异常,而run()方法是不能抛出异常的.<br>
 * (4)、运行Callable任务可拿到一个Future对象,获取线程的执行结果.<br>
 */
class TaskCallable implements Callable<String>
{

    @Override
    public String call() throws Exception
    {
        Thread.sleep(2000);
        return "futureResult";
    }

}

 

分享到:
评论

相关推荐

    java并发包之Callable和Future

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

    【Java】Callable创建线程用到的适配器模式(csdn)————程序.pdf

    2. 创建FutureTask实例:FutureTask是Java并发包(java.util.concurrent)中的一个类,它是一个可以被取消的任务,同时也是一个实现了Runnable接口的Future。FutureTask提供了对Callable结果的访问和管理,包括获取...

    java5 并发包 (concurrent)思维导图

    Java 5并发包(`java.util.concurrent`,简称`Concurrent`包)是Java平台中用于多线程编程的重要组成部分,它提供了丰富的并发工具类,极大地简化了在多线程环境下的编程工作。这个包的设计目标是提高并发性能,减少...

    juc详解juc详解juc详解juc详解juc详解juc详解juc详解

    - `Callable`接口类似于`Runnable`,但其`call()`方法可以返回一个结果并抛出异常,它是`Future`任务的基础。 3. **并发容器**: - `ConcurrentHashMap`:线程安全的哈希映射表,比`synchronized`的`HashMap`更...

    java 并发学习总结

    3. **同步工具类**:Java并发包`java.util.concurrent`中的工具类,如`Semaphore`(信号量)、`CyclicBarrier`(回环栅栏)、`CountDownLatch`(倒计时器)和`FutureTask`(未来任务)等,提供了更灵活的线程同步和...

    java.util.concurrent.uml.pdf

    而Callable接口类似于Runnable,但它可以有返回值,并能够抛出异常。 Future是一个接口,代表异步计算的结果。它提供了get方法,用于获取计算结果,以及cancel方法来取消任务,还有isDone和isCancelled等方法用于...

    JavaConcurrency:这是一个用于Java并发包的学习程序

    Java并发包(java.util.concurrent)提供了一系列的类和接口,旨在简化多线程环境下的编程,提高应用程序的性能和可伸缩性。 首先,我们要了解Java中的线程。线程是程序执行的最小单元,一个进程可以有多个线程同时...

    java concurrent 包 详细解析

    Java并发包(java.concurrent)是Java平台中处理多线程编程的核心工具包,它提供了丰富的类和接口,使得开发者能够高效、安全地编写多线程程序。这个包的设计目标是提高并发性能,减少同步代码的复杂性,并提供高级...

    Java多线程程序设计

    Java并发包(java.util.concurrent)提供了一系列线程安全的集合类,如ConcurrentHashMap、CopyOnWriteArrayList等,它们在多线程环境下仍能保持数据一致性。 七、Future和Callable接口 Callable接口类似于Runnable...

    concurrent-resource-test:Java并发包源码学习

    Java并发包(java.util.concurrent)提供了丰富的类和接口,用于处理多线程环境下的同步、互斥以及线程间的协作。这个"concurrent-resource-test"项目很可能是为了深入理解和实践Java并发包中的源码而设计的。下面...

    java学习资料-线程

    在Java中,线程的创建和管理是通过多种方式实现的,包括继承Thread类、实现Runnable接口以及实现Callable接口。 1. 继承Thread类 当你创建一个新的线程时,最直接的方法就是创建一个Thread类的子类,并覆盖run()...

    natural-selection-simulation:使用Java并发包的自然选择模拟

    在本项目"natural-selection-simulation"中,开发者使用Java编程语言,特别是其并发包(java.util.concurrent)来实现这一模拟。Java并发包提供了丰富的工具和接口,使得多线程编程更加高效和可控,对于处理大规模...

    Java并发编程ppt.rar

    4. **Atomic类**:Java并发包`java.util.concurrent.atomic`中的Atomic类提供了一组原子操作,如`AtomicInteger`、`AtomicLong`等,这些类的实例变量更新时具有原子性,可以替代`synchronized`进行简单同步。...

    Java多线程文档

    Java并发包(java.util.concurrent)提供了许多高级并发工具,如Semaphore(信号量)、CyclicBarrier(回旋栅栏)、CountDownLatch(倒计时器)等,用于解决多线程问题。 九、Future和Callable接口 Future接口代表...

    中山大学研究生学院java讲义之(多线程)

    Future代表异步计算的结果,Callable接口允许我们返回一个结果。通过ExecutorService的submit()方法,可以同时获取Future对象和Callable的Future结果。 八、线程优先级与调度 Java提供线程优先级设置,但实际效果受...

    多线程发邮件

    提到ExecutorService,它是Java并发包`java.util.concurrent`中的核心接口,它提供了一种管理和控制线程的方法。在这个例子中,使用了`Executors.newFixedThreadPool(int nThreads)`来创建一个固定大小的线程池。这...

    java-core:JAVA集合包,线程池,并发包,NIO等API及链接相关学习

    线程池可以预先配置,根据任务需求动态调整大小,还可以通过Future和Callable接口获取线程执行结果。 4. **并发包**: java.util.concurrent(JUC)包包含了一系列高级并发工具,如Semaphore(信号量)、...

    java线程知识详解

    此外,Java并发库还包括Future和Callable接口,它们提供了异步计算的能力。Callable任务可以有返回值,而Future则用于获取和检查Callable任务的结果。 总的来说,理解和掌握Java线程对于编写高效并发的Java程序至关...

    java多线程处理数据库数据

    然而,为了更好地管理和控制线程,Java并发包提供了如`ExecutorService`、`Future`、`Callable`等高级接口和类,它们简化了多线程编程,并提供了更好的资源管理。 在处理数据库数据时,我们通常会使用JDBC(Java ...

    Java多线程实现.pdf

    Java多线程编程是Java平台的核心特性之一,特别是在Java 5之后,其并发包`java.util.concurrent`提供了更强大和高效的工具,使得开发者能够更好地管理线程资源,提高应用程序的性能和可伸缩性。本篇文章将深入探讨...

Global site tag (gtag.js) - Google Analytics