创建执行线程方式三:实现Callable接口

Callable接口

① Java 5.0 在 java.util.concurrent 提供了一个新的创建执行 线程的方式:Callable 接口
② Callable 接口类似于 Runnable,两者都是为那些其实例可 能被另一个线程执行的类设计的。

但是 Runnable 不会返 回结果,并且无法抛出经过检查的异常。
③ Callable 需要依赖FutureTask ,FutureTask 也可以用作闭 锁

TestCallable

package com.aff.juc;

import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;

/*1.创建执行线程的方式三:实现Callable接口,相较于实现Runable接口的方式,
      方法可有有返回值,并且可以跑出异常.
   2.执行Callable接口方式,需要FutureTask 实现类的支持,用于接收运算结果。
      FutureTask 是 Future 接口的实现类

*/
public class TestCallable {
    public static void main(String[] args) {
        ThreadDemo4 td4 = new ThreadDemo4();
        // 1.执行Callable方式,需要FutureTask实现类支持,用于接收计算结果
        FutureTask<Integer> result = new FutureTask<>(td4);
        new Thread(result).start();
        // 2.接收线程运算后的结果
        try {
            Integer sum = result.get();
            System.out.println(sum);
            System.out.println("-----------");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

/*
 * class ThreadDemo3 implements Runnable{
 *
 * @Override public void run() { } }
 */

class ThreadDemo4 implements Callable<Integer> {

    @Override
    public Integer call() throws Exception {
        int sum = 0;
        for (int i = 0; i < 100; i++) {
            System.out.println(i);
            sum += i;
        }
        return sum;
    }
}

原文地址:https://www.cnblogs.com/afangfang/p/12631477.html

时间: 2024-08-29 14:53:41

创建执行线程方式三:实现Callable接口的相关文章

java核心学习(二十一) 多线程---创建启动线程的三种方式

本节开始java多线程编程的学习,对于操作系统.进程.线程的基本概念不再赘述,只是了解java对于多线程编程的支持有哪些. 一.继承Thread类来创建线程 java语言中使用Thread类来代表线程,代表线程的类可以通过继承Thread类并重写run()方法来实现多线程开发,调用线程类实例的start方法来启动该线程.下面来试一试 package ThreadTest; public class FirstThread extends Thread{ private int i; public

Java-第三篇3种创建的线程方式

1.Java使用Thread类代表线程,所有的线程对象必须是Thread类或其子类的实例. 当线程继承Thread类时,直接使用this即可获取当前线程,Thread对象的getName()方法返回当前线程的名字,因此可以直接调用getName()方法返回当前线程的名字. Thread.currentThread():该方法总是返回当前正在执行的线程对象. 2.创建线程方式1:继承Thread类创建线程类 这种方式创建线程的步骤一般为: 1>定义Thread类的子类,并重写该类的run()方法,

java 创建线程的三种方法Callable,Runnable,Thread比较及用法

转自:http://www.chinaitlab.com/Java/line/942440.html 编写多线程程序是为了实现多任务的并发执行,从而能够更好地与用户交互.一般有三种方法,Thread,Runnable,Callable. Runnable和Callable的区别是, (1)Callable规定的方法是call(),Runnable规定的方法是run(). (2)Callable的任务执行后可返回值,而Runnable的任务是不能返回值得 (3)call方法可以抛出异常,run方法

java多线程 -- 创建线程的第三者方式 实现Callable接口

Java 5.0 在 java.util.concurrent 提供了一个新的创建执行线程的方式:Callable 接口Callable 接口类似于 Runnable,两者都是为那些其实例可能被另一个线程执行的类设计的.但是 Runnable 不会返回结果,并且无法抛出经过检查的异常.Callable 需要依赖FutureTask ,FutureTask 也可以用作闭锁. 例子: package com.company; import java.util.concurrent.Callable;

java基础——实现Callable接口创建线程

package callable; /* 创建线程方式三:实现Callable接口 1.创建一个实现Callable的实现类 2.实现call方法,将此线程需要执行的操作声明在次方法中 3.创建Callable接口实现类的对象 4.将此对象作为参数丢到FutureTask构造器中,创建FutureTask对象 5.将FutureTask对象作为对象传递到Thread构造器中,创建Thread对象,start() 6.如果需要方法的返回值,则用futureTask.get()方法去获取 理解: 1

锁和多线程:线程创建3种方式(一)

线程 锁Synchronized 1.线程创建 2.线程安全 搞明白 线程 锁和多线程系列 1.线程创建 线程创建常见的三种方式: 继承Thread类 实现Runnable接口 实现Callable接口 第三种方式有异步调用效果,类似js中的ajax可以接收返回值,其余两种不能. package thread; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import

Java多线程之Callable接口的实现

import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask; /*  * 一.创建执行线程的方式三:实现 Callable 接口. 相较于实现 Runnable 接口的方式,方法可以有返回值,并且可以抛出异常.  *  * 二.执行 Callable 方式,需要 FutureTask 实现类的支持,用于接收运

GUC-6 Callable 接口

import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask; /* * 一.创建执行线程的方式三:实现 Callable 接口. 相较于实现 Runnable 接口的方式,方法可以有返回值,并且可以抛出异常. * * 二.执行 Callable 方式,需要 FutureTask 实现类的支持,用于接收运算结果

5、JUC--实现 Callable 接口

Callable接口 ? Java 5.0 在 java.util.concurrent 提供了一个新的创建执行 线程的方式:Callable 接口 ? Callable 接口类似于 Runnable,两者都是为那些其实例可 能被另一个线程执行的类设计的.但是 Runnable 不会返 回结果,并且无法抛出经过检查的异常. ? Callable 需要依赖FutureTask ,FutureTask 也可以用作闭锁 创建执行线程的方法有四种: 1.继承Thread类或者创建线程类 2.通过实现Ru