1、runnable 与 callable区别

2、避免callable执行完任务,获取返回结果时,阻塞其他子线程

下面固定线程池,设置4个,表明同时只有4个线程在执行任务,当某个线程执行完一个任务,才会把另一个任务加进来继续执行(注释的是调度线程池)

{下图有10个任务要执行,但线程池里只有4个线程来执行任务}

下面这种写法,可以给执行任务的线程传参(即自己重写的TaskCallabel,传i了)

接上图,用Future接收实现callable接口的线程的返回值,会阻塞主线程

下面自己实现的TsakCallable,在构造函数中接收参数;同时,实现了Callable接口,使得线程可以有返回值

接上图

执行结果如下:

下面即是,当为调度线程池时,这个可以调度的线程池,即可以延时执行

下面是java并发包中的几种线程池

java 并发包runnable 与 callable的更多相关文章

  1. Java中的Runnable、Callable、Future、FutureTask的区别与示例

    Java中存在Runnable.Callable.Future.FutureTask这几个与线程相关的类或者接口,在Java中也是比较重要的几个概念,我们通过下面的简单示例来了解一下它们的作用于区别. ...

  2. Java中的Runnable、Callable、Future、FutureTask的区别

    本文转载自:http://blog.csdn.net/bboyfeiyu/article/details/24851847 Runnable 其中Runnable应该是我们最熟悉的接口,它只有一个ru ...

  3. Java多线程Runnable与Callable区别与拓展

    我们先来分别看一下这两个接口 Runnable: // // Source code recreated from a .class file by IntelliJ IDEA // (powered ...

  4. java并发编程--Runnable Callable及Future

    1.Runnable Runnable是个接口,使用很简单: 1. 实现该接口并重写run方法 2. 利用该类的对象创建线程 3. 线程启动时就会自动调用该对象的run方法 通常在开发中结合Execu ...

  5. Java并发编程之线程创建和启动(Thread、Runnable、Callable和Future)

    这一系列的文章暂不涉及Java多线程开发中的底层原理以及JMM.JVM部分的解析(将另文总结),主要关注实际编码中Java并发编程的核心知识点和应知应会部分. 说在前面,Java并发编程的实质,是线程 ...

  6. Java:多线程,分别用Thread、Runnable、Callable实现线程

    并发性(concurrency)和并行性(parallel)是两个概念,并行是指在同一时刻,有多条指令在多个处理器上同时执行:并发指在同一时刻只能有一条指令执行,但多个进程指令被快速轮换执行,使得宏观 ...

  7. Java线程—-Runnable和Callable的区别和联系

    Java 提供了三种创建线程的方法 1.继承Thread接口 public class Thread2Thread { public static void main(String[] args) { ...

  8. Java多线程之Thread、Runnable、Callable及线程池

    一.多线程 线程是指进程中的一个执行流程,一个进程中可以有多个线程.如java.exe进程中可以运行很多线程.进程是运行中的程序,是内存等资源的集合,线程是属于某个进程的,进程中的多个线程共享进程中的 ...

  9. java中Runnable和Callable的区别

    文章目录 运行机制 返回值的不同 Exception处理 java中Runnable和Callable的区别 在java的多线程开发中Runnable一直以来都是多线程的核心,而Callable是ja ...

随机推荐

  1. Java如何将每个单词的第一个字符转为大写?

    在Java编程中,如何将每个单词的第一个字符转为大写? 以下示例演示如何使用toUpperCase(),appendTail()方法将字符串中每个单词的第一个字母转换为大写字母. package co ...

  2. CentOS6上实现Tomcat8 service启动,并查看status

    service配置脚本,“/etc/init.d/tomcat”,实现通过"service tomcat status " 查看tomcat状态,并输出PID,见脚本 # desc ...

  3. Tensorflow读写TFRecords文件

    在使用slim之类的tensorflow自带框架的时候一般默认的数据格式就是TFRecords,在训练的时候使用TFRecords中数据的流程如下:使用input pipeline读取tfrecord ...

  4. [Android] 基于 Linux 命令行构建 Android 应用(一):关于 Android 项目

    关于 Android 项目 项目是保存源代码和资源文件的容器. 谷歌提供的 Android SDK 工具只能对具有固定目录结构的项目进行编译和打包.因此强烈建议使用 Eclipse + ADT 或者 ...

  5. 【zheng阅读系列】shiro权限管理

    一.配置文件 upms-server/springMVC-servlet.xml <?xml version="1.0" encoding="UTF-8" ...

  6. 浅谈webpack4.0 性能优化(转)

    前言:在现实项目中,我们可能很少需要从头开始去配置一个webpack 项目,特别是webpack4.0发布以后,零配置启动一个项目成为一种标配.正因为零配置的webpack对项目本身提供的“打包”和“ ...

  7. 微信小程序获取到Openid

    前台代码片段 onLoad: function () { wx.login({ success(res) { console.log('code: '+res.code) if (res.code) ...

  8. Centos下磁盘管理---分区

        1.磁盘分区格式说明 linux分区不同于windows,linux下硬盘设备名为(IDE硬盘为hdx(x为从a—d)因为IDE硬盘最多四个,SCSI,SATA,USB硬盘为sdx(x为a—z ...

  9. 170830、oracle密码过期ORA-28002: 7天之后口令将过期的解决方法

    登陆oracle数据库时错误信息提示:“ORA-28002: 7 天之后口令将过期”. 原因:oracle11g中默认在default概要文件中设置了"PASSWORD_LIFE_TIME= ...

  10. 网络通信协议八之UDP协议详解

    视频传输中使用UDP协议比较多 UDP协议的责任 >>创建进程到进程间的通信(由端口号完成) >>有限的差错控制,出现差错悄悄丢弃报文(注意这点和TCP协议的区别)