首页 > 其他分享 >创建线程的方式三:实现Callable接口

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

时间:2022-10-25 02:00:17浏览次数:38  
标签:Thread 接口 Callable num 线程 FutureTask new

package A_ShangGuiGu.Thread.ThreadTest;

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

/**
* 创建线程的方式三:实现Callable接口 ---JDK5.0新增
* Callable相比于Runnable的优点
* 1.Callable有返回值。
* 2.Callable可以抛出异常,被外面的操作捕获,获取异常
* 3.Callable支持泛型。
*/
//创建一个实现Callable接口的实现类
class Thread_Callable implements Callable{
//实现call方法,将需要执行的操作放入该call()方法中。该方法需要返回值,如果没有返回值:return null;
@Override
public Object call() throws Exception {
int num = 0;
for (int i = 1; i <=100; i++) {
if (i%2==0){
System.out.println(Thread.currentThread().getName()+i);
num+=i;
}
}
return num;
}
}

//
public class ThreadCallable {
public static void main(String[] args) {
Thread_Callable callable = new Thread_Callable();//创建这个Callable接口类的对象。

FutureTask futureTask = new FutureTask<>(callable);//将此Callable接口实现类的对象传递到FutureTask的对象中

Thread t1 = new Thread(futureTask);//创建一个线程,参数为FutureTask创建的对象
t1.setName("偶数线程:");
t1.start();

try {
Object num = futureTask.get();//.get():是获取FutureTask创建的这个对象中call()的返回值,可获取也可不予理会。
System.out.println("总和为"+num);
} catch (InterruptedException e) {
throw new RuntimeException(e);
} catch (ExecutionException e) {
throw new RuntimeException(e);
}
}
}

标签:Thread,接口,Callable,num,线程,FutureTask,new
From: https://www.cnblogs.com/zhazhawei906/p/16823633.html

相关文章

  • javascript编程单线程之同步模式
    javascript编程单线程之同步模式主流的js环境都是单线程吗模式执行js代码,js采用为单线程的原因与最开始设计初衷有关,最早是运行在浏览器端的脚本语言,目的是为了实现页......
  • 并发编程之线程池
    线程池为什么需要线程池?如果性能允许的话,我们完全可以在for循环代码起很多的线程去帮我们执行任务,代码如下publicclassManyThread{publicstaticvoidmain(S......
  • TCP进程与线程的区别
    1、进程和线程的区别:答:线程是指进程内的一个执行单元,也是进程内的可调度实体。与进程的区别:(1)调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位。(2)......
  • JVM中的进程和线程
    JVM中的进程和线程介绍一个进程可以有很多个线程,进程之间基本上都是独立的,但是同一进程中的不同线程很可能会相互影响。每个线程有自己的程序计数器、虚拟机栈和本地方......
  • java 线程
                Runnable           getName        线程让步  join()  Thread.sleep();......
  • Go:一文玩转接口
    接口的基本剖析packagemainimport"fmt"typeTestinterface{ show()}typemyStringstringfunc(mysmyString)show(){ fmt.Println(mys)}funcmain......
  • 接口如何体现多态性
     如调用时Computuercom=newComputer();Flashflash=newFlash();com.transform(flash);  publicvoidtransform(USBusb){ //此时相当于USBu......
  • python之第三方库netifaces库:netifaces 模块用于提供有关网络接口及其状态的信息(①获
    前言1、 在系统运维等过程中,网络永远是离不开的话题。网络中比较基础的是网络接口,每个网络接口都有一个名字,并且有它的ip地址,还有关于从这个接口出去的包的路由。我们可......
  • 接口
    packageJiekou;importjavax.management.MBeanAttributeInfo;/***@authorliu$*//*接口的使用1.使用interface来定义2.Java中,类和接口是两种不同的结构3.如何定义接口,......
  • Java 8 函数式接口和Lambda表达式
    Java一直是一种面向对象的编程语言。这意味着Java编程中的一切都围绕着对象(为了简单起见,除了一些基本类型)。我们不仅有Java中的函数,它们还是Class的一部分,我们需......