Callable接口】的更多相关文章

1. Callable与Runable区别 Java从发布的第一个版本开始就可以很方便地编写多线程的应用程序,并在设计中引入异步处理.Thread类.Runnable接口和Java内存管理模型使得多线程编程简单直接. 但Thread类和Runnable接口都不允许声明检查型异常,也不能定义返回值.没有返回值这点稍微有点麻烦.不能声明抛出检查型异常则更麻烦一些. public void run()方法契约意味着你必须捕获并处理检查型异常.即使你小心地保存了异常信息(在捕获异常时)以便稍后检查,但也…
public interface Executor { /** * Executes the given command at some time in the future.  The command * may execute in a new thread, in a pooled thread, or in the calling * thread, at the discretion of the <tt>Executor</tt> implementation. * *…
多线程有两种实现方式: 一种是实现Runnable接口,另一种是继承Thread类,这两种方式都有缺点,run方法没有返回值,不能抛出异常(这两个缺点归根到底是Runable接口的缺陷,Thread也是实现了Runnable接口),如果需要知道一个线程的运行结果就需要用户自行设计,线程类自身也不能提供返回值和异常. 但是从JDK1.5之后引入了一个新的接口Callable,它类似于Runnable接口,实现它就可以实现多线程任务,Callable接口的定义如下: public interface…
前两篇博客(多线程--继承Thread类.多线程--实现Runnable接口 )介绍了java使用线程的两种方法.这篇博客继续介绍第三种方法--实现Callable接口. 先说一下Runnable和Callable的差别: 1.Callable规定的方法是call(),Runnable规定的方法是run(). 2.Callable的任务运行后可返回值.而Runnable的任务是不能返回值得 3.call方法能够抛出异常,run方法不能够 4.运行Callable任务能够拿到一个Future对象,…
Callable 和 Future接口  Callable是类似于Runnable的接口,实现Callable接口的类和实现Runnable的类都是可被其它线程执行的任务. Callable和Runnable有几点不同: (1)Callable规定的方法是call(),而Runnable规定的方法是run(). (2)Callable的任务执行后可返回值,而Runnable的任务是不能返回值的. (3)call()方法可抛出异常,而run()方法是不能抛出异常的. (4)运行Callable任务…
1.使用Callable接口的方式实现多线程,这是JDK5.0新增的一种创建多线程的方法 package com.baozi.java2; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask; public class ThreadNew { public static void main(Strin…
1.实现Callable接口,重写call方法,有返回值 2.通过实现Callable接口创建的线程只能在线程池中使用. 3.返回值就是run方法返回的对象 4.通过future.get()可以获取到返回的内容 实现Callable接口 /** * * @author Administrator *实现callable接口,重写call方法,存在返回值 */ public class CallableTest implements Callable<String>{ @Override pub…
Callable java5之前是没有返回值的,Java5新增了Callable接口获得线程的返回值,可返回值的任务必须实现Callable接口,类似的,无返回值的任务必须Runnable接口.Callable的call方法可以根据你传入的泛型参数返回对应类型的数据.执行Callable任务后,可以获取一个Future的对象,在该对象上调用get就可以获取到Callable任务返回的Object了. 示例: package thread_Callable; import java.util.co…
类继承关系 Callable接口 @FunctionalInterface public interface Callable<V> { V call() throws Exception; } Callable接口中只有一个call()方法,和Runnable相比,该方法有返回值并允许抛出异常. 但是这里有一个问题,进程是要通过Thread类去创建的,但是Thread的target必须是实现了Runnable接口的类对象,所以Callable对象无法直接作为Thread对象的接口:所以要想作…
Callable接口  Java 5.0 在 java.util.concurrent 提供了一个新的创建执行 线程的方式:Callable 接口  Callable 接口类似于 Runnable,两者都是为那些其实例可 能被另一个线程执行的类设计的.但是 Runnable 不会返 回结果,并且无法抛出经过检查的异常.  Callable 需要依赖FutureTask ,FutureTask 也可以用作闭锁 创建执行线程的方法有四种: 1.继承Thread类或者创建线程类 2.通过实现Ru…
1. Callable与Runable区别 Java从发布的第一个版本开始就可以很方便地编写多线程的应用程序,并在设计中引入异步处理.Thread类.Runnable接口和Java内存管理模型使得多线程编程简单直接. 但Thread类和Runnable接口都不允许声明检查型异常,也不能定义返回值.没有返回值这点稍微有点麻烦.不能声明抛出检查型异常则更麻烦一些. public void run()方法契约意味着你必须捕获并处理检查型异常.即使你小心地保存了异常信息(在捕获异常时)以便稍后检查,但也…
通过实现Runnable接口的实现 package Thread; import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors; public class RunnableThreadDemo { private static int POOL_NUM = 30; // 线程池数量 public static void main(String[] args) throws Interrupte…
1.接口的定义: public interface Callable<V> { V call() throws Exception; } 2.Callable和Runnable的异同 先看下Runnable接口的定义 public interface Runnable { public abstract void run(); } Callable的call()方法类似于Runnable接口中run()方法,都定义任务要完成的工作,实现这两个接口时要分别重写这两个方法,主要的不同之处是call…
实际开发过程中,我们常常需要等待一批线程都返回结果后,才能继续执行.<线程等待——CountDownLatch使用>中我们介绍了CountDownLatch的使用,通过使用CountDownLatch,可以实现线程等待. JDK 1.8实现了一种更好的方式,实现线程等待与获取线程返回值,那就是Callable接口,下面我们来看看具体代码. package com.coshaho.learn; import java.util.Random; import java.util.concurren…
package com.hls.juc; import java.util.concurrent.Callable;import java.util.concurrent.ExecutionException;import java.util.concurrent.FutureTask; /** * 创建多线程的方式 : 4种 * 1.继承Thread类 * 2.实现Runable接口 * 3.实现Callable接口 * 4.使用线程池创建线程 * * Callable相比Runable的区别…
本篇说明的是Callable和Future,它俩很有意思的,一个产生结果,一个拿到结果.        Callable接口类似于Runnable,从名字就可以看出来了,但是Runnable不会返回结果,并且无法抛出返回结果的异常,而Callable功能更强大一些,被线程执行后,可以返回值,这个返回值可以被Future拿到,也就是说,Future可以拿到异步执行任务的返回值,下面来看一个简单的例子: public class CallableAndFuture { public static v…
Java 5.0 在 java.util.concurrent 提供了一个新的创建执行线程的方式:Callable 接口Callable 接口类似于 Runnable,两者都是为那些其实例可能被另一个线程执行的类设计的.但是 Runnable 不会返回结果,并且无法抛出经过检查的异常.Callable 需要依赖FutureTask ,FutureTask 也可以用作闭锁. 例子: package com.company; import java.util.concurrent.Callable;…
实现Callable接口创建线程 Callable接口是在jdk5版本中加入的,这个接口在java.util.concurrent包下面,与其他两种方式不同的地方在于使用Callable接口创建的线程会获得一个返回值并且可以声明异常. 使用Callable创建线程步骤: 1.自定义一个类实现java.util.concurrent包下的Callable接口 2.重写call方法 3.将要在线程中执行的代码编写在call方法中 4.创建ExecutorService线程池 5.将自定义类的对象放入…
import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask; /* * 一.创建执行线程的方式三:实现 Callable 接口. 相较于实现 Runnable 接口的方式,方法可以有返回值,并且可以抛出异常. * * 二.执行 Callable 方式,需要 FutureTask 实现类的支持,用于接收运算结果…
创建执行线程有四种方式: 实现implements接口创建线程 继承Thread类创建线程 实现Callable接口,通过FutureTask包装器来创建线程 使用线程池创建线程 下面介绍通过实现Callable接口来创建线程. package com.ccfdod.juc; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurre…
一.简单使用 Runnable是执行工作的独立任务,但是它不返回任何值.如果你希望任务完成的时能够返回一个值,那么可以实现一个Callable接口.在Java SE5中引入的Callable是一种具有类型参数的泛型,它的类型参数表示的是从call()方法中返回的值,并且必须用ExecutorService.submit()方法调用它.下面是一个简单的例子(摘自Java编程思想) class TaskWithResult implements Callable<String> { private…
1概念 1.1进程 进程指正在运行的程序.确切的来说,当一个程序进入内存运行,即变成一个进程,进程是处于运行过程中的程序,并且具有一定独立功能. 任务管理器中: 1.2线程 线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程.一个进程中是可以有多个线程的,这个应用程序也可以称之为多线程程序. 简而言之:一个程序运行后至少有一个进程,一个进程中可以包含多个线程 1.3多线程 就是一个程序中有多个线程在同时执行. 单线程程序:多个任务只能依次执行.只有一个线程, 例:ma…
通过Callable接口创建线程 一.前言 Java中创建线程的方式有四中,前两种在前面我已经详细介绍过了(Runnable和Thread),不清楚的朋友们可看这里: Java多线程之线程的启动以及Java多线程之Runnable与Thread,至于最后一种创建线程的方式我会在后续的博文中做详细介绍,详情可关注我的博文. Java 5.0 在java.util.concurrent 提供了一个新的创建执行线程的方式:Callable 接口 Callable 接口类似于Runnable,两者都是为…
public class CallableDemo { public static void main(String[] args) throws Exception, ExecutionException { FutureTask<String> futureTask = new FutureTask<>(new CallableThread()); new Thread(futureTask,"A").start(); System.out.println(…
通过Callable和Future创建线程 i. 创建Callable接口的实现类,并实现call方法,该call方法将作为线程执行体,并且有返回值,可以抛出异常. ii. 创建Callable实现类的实例,使用FutureTask类包装Callable对象,该FuturedTask对象封装了Callable对象的call方法的返回值. iii. 使用FutureTask对象作为Thread对象的target,创建并启动新线程. iv. 调用FutureTask对象的get方法来获得子线程执行结…
Callable 接口 一.Java 5.0 在 java.util.concurrent 提供了 一个新的创建执行线程的方式(之前有继承Thread 和 实现Runnable):Callable 接口 Callable 接口类似于 Runnable ,两者都是为那些其 实例 可能被另外一个线程执行的类设计的.但是 Runnable 接口的 run方法,不会有返回值,并且无法抛出结果检查的异常 二.执行 Callable 方式 ,需要FutureTask 实现类的支持,用于接收运算结果(call…
一.通过Callable接口实现多线程 c.实现Callable重写call方法 实现Callable和实现Runnable类似,但是功能更强大,具体表现在 a.可以在任务结束后提供一个返回值,Runnable不行 b.call方法可以抛出异常,Runnable的run方法不行 c.可以通过运行Callable得到的Fulture对象监听目标线程调用call方法的结果,得到返回值,(fulture.get(),调用后会阻塞,直到获取到返回值) 1.Callable接口介绍: (1)java.ut…
目录 1.主线程等待法 2.使用Thread类的join()阻塞当前线程,等待子线程执行完毕 3.通过Callable接口实现:通过FutureTask Or线程池获取 四.线程返回值获取方式和Callable接口 1.主线程等待法 public class CycleWait implements Runnable{ private String value; @Override public void run() { try { Thread.currentThread().sleep(50…
实现步骤: 创建 Callable 接口的实现类,并实现 call() 方法,该 call() 方法将作为线程执行体,并且有返回值. 创建 Callable 实现类的实例,使用 FutureTask 类来包装 Callable 对象,该 FutureTask 对象封装了该 Callable 对象的 call() 方法的返回值. 使用 FutureTask 对象作为 Thread 对象的 target 创建并启动新线程. 调用Tread对象的start()方法启动线程,调用 FutureTask…
在jdk5.0后又新增了两种解决线程安全的问题 一: 实现Callable接口, 实现接口步骤: 1: 创建一个实现Callable接口的实现类 2: 实现Callable接口中的call()方法, 讲此线程需要做的操作声明再这个方法中 3: 创建Callable 接口实现类的对象 4: 将创建对象传递到FutureTask构造器中,创建FutureTask对象 5: 将Future的对象作为参数传递到Thread类中 并调用thread的start()方法 6: 通过get()获取call方法…