多线程的创建方式之实现Callable接口
与实现Runable接口相比,Callable功能更强大
1.与run()方法相比,call()方法可以有返回值
2.call()方法可以抛出异常
3.call()方法支持泛型的返回值
4.call()方法的返回值以及线程的调用需要借助于FutureTask类来实现
5.FutureTask的run方法是线程安全的,使用的是CAS机制
示例代码:
package com.debuggg.exer;
import java.util.concurrent.Callable;import java.util.concurrent.ExecutionException;import java.util.concurrent.FutureTask;
class NumThread implements Callable {
@Override public Object call() throws Exception { int sum = 0; for (int i = 0; i < 100; i++) { if(i % 2 == 0){ sum += i; System.out.println(i); } } return sum; }}
public class CallableTest { public static void main(String[] args) { NumThread numThread = new NumThread();
FutureTask futureTask = new FutureTask(numThread);
Thread thread = new Thread(futureTask); thread.start();
try { int num = (int)futureTask.get(); System.out.println(num); } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); }
}}
多线程的创建方式之实现Callable接口相关推荐
- 线程创建方式3-实现 callable接口(Java)
线程创建方式3-实现 callable接口(Java) 线程创建方式三:实现 callable接口 callable的好处: 1.可以定返回值 2.可以抛出异常 package src.Demo02; ...
- 实现多线程的方式之实现Callable接口
package com.hls.juc; import java.util.concurrent.Callable;import java.util.concurrent.ExecutionExcep ...
- 创建线程的第三种方式:实现Callable接口(含部分源码解析)
创建线程的第三种方式--实现Callable接口 package com.lqy.Multithreading; import java.util.concurrent.Callable; impor ...
- 一篇文章认识4种Java多线程的创建方式
Java4种多线程的创建: 什么是程序? 什么是进程? 什么是线程? 并行与并发: 那么JAVA多线程实现方式: (1)继承Thread类实现多线程: (2)实现Runnable接口方式实现多线程: ...
- 多线程的创建方式和解决线程安全问题
一 基本概念 ①程序(program)是为完成特定任务.用某种语言编写的一组指令的集合.即指一 段静态的代码,静态对象. ②进程(process)是程序的一次执行过程,或是正在运行的一个程序.是一个 ...
- (面经总结)一篇文章带你整理面试过程中关于Java 中多线程的创建方式的最全整理
文章目录 一.Java线程的创建方式 二.继承Thread类 三.实现 Runnable 接口 四.通过ExecutorService和`Callable`实现有返回值的线程 五.基于线程池 六.面试 ...
- java callable 详解_Java多线程详解(七)------Callable接口介绍
一.与runnable接口对比 1 创建新类MyThread实现runnable接口2 class MyThread implementsRunnable{3 @Override4 public vo ...
- java中多线程的创建方式一:
//多线程的创建: //方式一:继承于Thread类的方式进行创建 //1.创建一个继承Thread类的子类 //2.重写Thread类中的run()方法–>将此线程执行的操作写在run方法中 ...
- 多线程的创建方式 你会优先选择哪一种_Python多线程入门到放弃
在生产者消费者的中, 我们经常会遇到任务调度的情况, 这时候常用的解决方案就是使用多线程来解决相关的调度问题. 多线程扩展了多进程的概念,使得同一个进程可以同时并发处理多个任务. 线程(Thread) ...
最新文章
- 她琴棋书画全能,还进入清华计算机系实验室,被赞智商太超群、能力过强悍...
- RFID自动识别术语解释(zt)
- android自定义控件 几种方式总结
- function module COM_PRODUCT_GETDETAIL_INTERNAL的内存分配问题
- Javascript----input事件实现动态监听textarea内容变化
- 使用yaml文件创建deployment来部署一个应用程序到k8s集群
- cd40系列芯片_CD40系列74系列芯片
- 3.7V转12V2A 15V2A 大功率升压芯片 拉杆音响专用升压芯片
- What is Dymola?---Dymola的特点和架构
- 如何查看AT24C02设备地址
- 并联串联混合的电压和电流_并联电阻的计算公式(附各种并联电阻网络图解)...
- oracle查询怎样更效率,Oracle提高查询效率的方法
- word中如何插入参考文献
- 16秋计算机JAVA第一节课作业(钟永钜)
- unix时间戳 为什么计算机时间要从1970年1月1日开始算起?
- 不用Home Assistant让小米智能家居接入HomeKit
- java中级程序员全面学习路线教程
- Python 获取 网易云音乐热门评论
- Docker--10张图带你深入理解Docker容器和镜像
- centos 安装gstreamer_64位CentOS系统中安装32位开发库
热门文章
- Java连接字符(concat)
- 怎么烧录c语言_单的入门1 -- C语言 : 一门和芯片对话的外语
- 阿里云专有网络环境下不同账号之间内网互通(内网高速通道)
- Linux rescue救援(光盘修复)模式详解
- Java基础学习总结(140)——Java8 Stream之Stream流创建的几种方式
- Linux学习总结(42)——Linux之Bash脚本入门学习
- Linux学习总结(18)——Linux使用init命令关机、重启、切换模式
- Spring学习总结(16)——Spring AOP实现执行数据库操作前根据业务来动态切换数据源
- oracle创建表不在对应表空间,oracle创建表空间
- 手机上网有几种方式?