JAVA Callable】的更多相关文章

Java Callable.Future的两种使用方式Callable+Futurepublic class Test { public static void main(String[] args) { ExecutorService executor = Executors.newCachedThreadPool(); Task task = new Task(); Future<Integer> future = executor.submit(task); executor.shutd…
Home » Java » Java Callable Future Example Java Callable Future Example April 3, 2018 by Pankaj 25 Comments Java Callable and Future are used a lot in multithreaded programming. In last few posts, we learned a lot about java threads but sometimes we…
Callable<>和Runable类似,都是用于Java的并发执行. 唯一的区别是,Runable的run方法的返回是void,而Callable的call方法是有返回值的. call方法返回的类型是实现Callable<?>泛型接口时所指定的类型,不然会编译出错. 那么,怎样获取call方法的返回值呢?——通过执行Callable,可以返回的Future对象,通过调用future对象的get方法来获取call方法的返回值. 综上,你把Callable当成是有返回值的Runabl…
Listing -. Calculating Euler’s Number e import java.math.BigDecimal; import java.math.MathContext; import java.math.RoundingMode; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.Execut…
这两天复习java线程时,把java里面的线程基本知识点与jdk1.5以后新添加的一些类的使用都了解了一下,借用生产者消费者的问题来将他们实践一下. 题目:(题目在csdn一大牛的空间找的) 生产者-消费者模式,这个食堂中只有1张桌子,同时最多放10个盘子,现在有4个厨师做菜,每做好一盘就往桌子上放(生产者将产品往仓库中放),而有6个食客不停地吃(消费者消费产品,为了说明问题,他们的食量是无的).一般而言,厨师200-400ms做出一盘菜,而食客要400-600ms吃完一盘.当桌子上放满了10个…
package com.java.concurrent; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask; /** * 一.创建线程的方式三:实现Callable接口,相较于实现Runnable 接口的方式,方法可以有返回值,并且可以抛出异常 * * 二.执行Callable方式,需要Future…
1. 创建线程的三种方式: 继承Thread,重写run方法 实现Runnable接口,重新run方法 实现Callable接口,重写call方法 2. Callable接口实际上是属于Executor框架中的功能类,Callable接口与Runnable接口的功能类似,但提供了比Runnable更加强大的功能. Callable可以在任务结束的时候提供一个返回值,Runnable无法提供这个功能 Callable的call方法分可以抛出异常,而Runnable的run方法不能抛出异常. 3.…
1. Callable与Runable区别 Java从发布的第一个版本开始就可以很方便地编写多线程的应用程序,并在设计中引入异步处理.Thread类.Runnable接口和Java内存管理模型使得多线程编程简单直接. 但Thread类和Runnable接口都不允许声明检查型异常,也不能定义返回值.没有返回值这点稍微有点麻烦.不能声明抛出检查型异常则更麻烦一些. public void run()方法契约意味着你必须捕获并处理检查型异常.即使你小心地保存了异常信息(在捕获异常时)以便稍后检查,但也…
创建线程的两种方式,一种是直接继承Thread,另外一种就是实现Runnable接口.这两种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果.如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到效果,这样使用起来就比较麻烦.而自从Java 1.5开始,就提供了Callable和Future,通过它们可以在任务执行完毕之后得到任务执行结果. 一.Runnable接口 先看一下java.lang.Runnable吧,它是一个接口,在它里面只声明了一个run()方法: publi…
实际开发过程中,我们常常需要等待一批线程都返回结果后,才能继续执行.<线程等待——CountDownLatch使用>中我们介绍了CountDownLatch的使用,通过使用CountDownLatch,可以实现线程等待. JDK 1.8实现了一种更好的方式,实现线程等待与获取线程返回值,那就是Callable接口,下面我们来看看具体代码. package com.coshaho.learn; import java.util.Random; import java.util.concurren…
submit方法会产生Future对象,它用Callable返回结果的特定类型进行了参数化,可以用isDone()的方法来查询Future是否已经完成.当任务完成是,它具有一个结果,可以调用get()方法来获取该结果. /** * @Title: TaskWithResult.java * @Package zeze * @Description: TODO(用一句话描述该文件做什么) * @author A18ccms A18ccms_gmail_com * @date 2017年2月8日 上…
概述Callable和Runnbale一样代表着任务,区别在于Callable有返回值并且可以抛出异常.其使用如下: public class CallableDemo { static class SumTask implements Callable<Long> { @Override public Long call() throws Exception { long sum = 0; for (int i = 0; i < 9000; i++) { sum += i; } ret…
Runnbale封装一个异步运行的任务,可以把它想象成一个没有任何参数和返回值的异步方法.Callable和Runnable相似,但是它有返回值.Callable接口是参数化的类型,只有一个方法call public interface Callable<V> { V call() throws Exception; } 类型参数就是返回值的类型,例如:Callable<String>表示最终返回一个String的异步操作(计算) Runnbale封装一个异步运行的任务,可以把它想…
参考这篇文章:http://blog.csdn.net/ghsau/article/details/7451464  还有一个系列<Java多线程>…
在Java多线程之中,Callable和Future的使用时非常广泛的.在之前的文章中,我们了解了关于Java线程池基础的一些内容,知道如何提交Runnable的任务.但是,Runnable的任务是无法有返回值,也不能抛出异常的.而有些时候,我们希望一个线程能够有一些返回值.在Java 5中,引入了java.util.concurrent.Callable接口,这个接口很类似于Runnable接口,但是可以返回一个对象,或者抛出异常. Java Callable Java的Callable接口使…
简述 在多线程中有时候我们希望一个线程执行完毕后可以返回一些值,在java5中引入了java.util.concurrent.Callable接口,它类似于Runnable接口,但是Callable可以有返回值. Java Callable接口使用通用定义对象的返回类型,executor类提供了在线程池中执行Java调用的有用方法,由于可调用任务并行运行,所以我们必须等待返回的对象. Future 实现接口Callable的任务返回的是java.util.concurrent.Future对象,…
进程(Process)和线程(Thread)是程序执行的两个基本单元. Java并发编程很多其它的是和线程相关. 进程 进程是一个独立的执行单元,可将其视为一个程序或应用.然而,一个程序内部同事还包括多个进程. Java执行时环境就是一个单独的进程,在它内部还包括了作为进程的各种类和程序. 线程 能够将线程看做轻量级的进程. 线程存在于进程其中,须要的资源开销较小.同一进程中的线程共享进程的资源. Java多线程 每个Java引用都仅仅要有一个线程 - 主线程(main thread).尽管后台…
Sometime back I wrote a post about Java Callable Future interfaces that we can use to get the concurrent processing benefits of threads as well as they are capable of returning value to the calling program. FutureTask is base concrete implementation…
Welcome to the Java Scheduler Example. Today we will look into ScheduledExecutorService and it's implementation class ScheduledThreadPoolExecutor example. Table of Contents [hide] 1 Java Scheduler ScheduledExecutorService 1.1 Java Scheduler Example 1…
翻译自:https://www.journaldev.com/1016/java-thread-example 进程 进程是一个自包含的执行环境,它可以被看成一个程序或应用程序.然而一个应用程序本身包含多个进程,Java运行时环境作为一个单独的进程运行,它包含不同的类和程序 线程 线程可以成为轻量级进程,一个进程包含很多线程,线程占用很少的资源在进程中创建和运行,线程共享进程的资源 每个应用程序至少包含一个线程--主线程(main thread).尽管有很多其他的java线程在后台运行,比如内存…
原文:HowToDoInJava 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远. ApacheCN 学习资源 目录 核心 Java 教程 什么是 Java 编程语言? 什么是 Java JDK,JRE 和 JVM – 深入分析 Java 命名约定 Java 类路径 Java 变量 Java 运算符指南 Java 关键字 Java 中的数据类型 Java 中的原始数据类型 Java 包装器类 – 自动装箱,拆箱和转换示例 Java 中的语…
JDK提供了ExecutorService接口表示线程池,可以通过submit提交一个任务. ExecutorService executor = Executors.newFixedThreadPool(4); executor.submit(task); 但这里的task有个问题,因为继承制Runnable,如果希望返回一个结果,只能用Result来表示,这样主线程获取结果,就很不方便. class Task implements Runnable{ public String result…
目录 前言 1. Hystrix 基础知识 1.1 Hystrix 断路器强调调用 1.2 两大类别的 Hystrix 实现 1.3 舱壁策略 1.4 Hystrix 在远程资源调用失败时的决策过程 1.5 当 Hystrix 断路器打开后 1.6 Hystrix 的所有配置 2. 对服务使用 Hystrix 断路器 2.1 引入 pom.xml 依赖 2.2 修改 bootstrap.yml 配置文件 2.3 在主程序类上标注注解 2.4 在业务类上使用 @HystrixCommand 注解(…
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /** * 需求:计算网页访问量前三名 * 用户:喜欢视频 直播 * 帮助企业做经营和决策 * * 看数据 */ object UrlCount { def main(args: Array[String]): Unit = { //1.加载数据 val conf:SparkConf = new Spa…
概要 本章介绍线程池中的Callable和Future.Callable 和 Future 简介示例和源码分析(基于JDK1.7.0_40) 转载请注明出处:http://www.cnblogs.com/skywang12345/p/3544116.html Callable 和 Future 简介 Callable 和 Future 是比较有趣的一对组合.当我们需要获取线程的执行结果时,就需要用到它们.Callable用于产生结果,Future用于获取结果. 1. Callable Calla…
概要 本章介绍线程池中的Callable和Future.Callable 和 Future 简介示例和源码分析(基于JDK1.7.0_40) 转载请注明出处:http://www.cnblogs.com/skywang12345/p/3544116.html Callable 和 Future 简介 Callable 和 Future 是比较有趣的一对组合.当我们需要获取线程的执行结果时,就需要用到它们.Callable用于产生结果,Future用于获取结果. 1. Callable Calla…
在Java5之前,线程是没有返回值的,常常为了“有”返回值,破费周折,而且代码很不好写.或者干脆绕过这道坎,走别的路了.现在Java终于有可返回值的任务(也可以叫做线程)了. 可返回值的任务必须实现Callable接口,类似的,无返回值的任务必须Runnable接口. 执行Callable任务后,可以获取一个Future的对象,在该对象上调用get就可以获取到Callable任务返回的Object了. 下面是个很简单的例子: package com.lyc import java.util.co…
转自:http://www.chinaitlab.com/Java/line/942440.html 编写多线程程序是为了实现多任务的并发执行,从而能够更好地与用户交互.一般有三种方法,Thread,Runnable,Callable. Runnable和Callable的区别是, (1)Callable规定的方法是call(),Runnable规定的方法是run(). (2)Callable的任务执行后可返回值,而Runnable的任务是不能返回值得 (3)call方法可以抛出异常,run方法…
作者:海子 出处:http://www.cnblogs.com/dolphin0520/ 本博客中未标明转载的文章归作者海子和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利. Java并发编程:Callable.Future和FutureTask 在前面的文章中我们讲述了创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口. 这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果. 如果需要…