1.实现Callable接口,重写call方法,有返回值

2.通过实现Callable接口创建的线程只能在线程池中使用.

3.返回值就是run方法返回的对象

4.通过future.get()可以获取到返回的内容

实现Callable接口

/**
*
* @author Administrator
*实现callable接口,重写call方法,存在返回值
*/
public class CallableTest implements Callable<String>{ @Override
public String call() throws Exception { return "ccc";
} }

创建线程池,开启线程

/**
*
* @author Administrator
* 通过实现Callable方法创建线程
*/
public class ThreadCallable { public static void main(String[] args) {
try {
//1.创建线程池
ExecutorService pool = Executors.newFixedThreadPool(2);
//2.开启线程
Future<String> future = pool.submit(new CallableTest());
//3.获取线程的内容
System.out.println(future.get());
//4.关闭线程池
pool.shutdown();
} catch (Exception e) {
// TODO: handle exception
} }
}

创建多线程的第二种方法实现Callable接口的更多相关文章

  1. 创建线程的第二种方式------实现Runnable接口的方式

    package cn.itcast.demo16.Demo07.Runnable;/** * @author newcityman * @date 2019/7/22 - 23:17 */public ...

  2. Python并发编程之创建多线程的几种方法(二)

    大家好,并发编程 进入第二篇. 今天的内容会比较基础,主要是为了让新手也能无障碍地阅读,所以还是要再巩固下基础.学完了基础,你们也就能很顺畅地跟着我的思路理解以后的文章. 本文目录 学会使用函数创建多 ...

  3. Java创建多线程的三种方法

    Java多线程实现方式主要有三种:继承Thread类.实现Runnable接口.使用ExecutorService.Callable.Future实现有返回结果的多线程.其中前两种方式线程执行完后都没 ...

  4. Java 创建多线程的三种方法

    1. 继承Thread类2. 实现Runnable接口3. 匿名类的方式 注: 启动线程是start()方法,run()并不能启动一个新的线程

  5. 进程和创建线程的两种方法(threading.Thread)

    进程 如QQ 要以一个整体的形式暴露给操作系统管理,里面包含对各种资源的调用,内存的管理, 网络接口的调用等,进程就是各种资源管理的集合 线程:是操作系统最小的调度单位,是一串指令的结合 进程 要操作 ...

  6. Java中创建数组的几种方法

    Java中创建数组的几种方法 public static void main(String[] args) { //创建数组的第一种方法 int[] arr=new int[6]; int intVa ...

  7. 27 多线程(一)——创建进程的三种方法、线程锁(同步synchornized与lock)

    线程的流程 线程的创建 有三种方法,重点掌握前两种: 继承Thread类 实现Runnable接口(推荐使用:避免单继承的局限性) 实现Callable接口 根据java的思想,要少用继承,多用实现. ...

  8. 创建多线程的第一种方式——创建Thread子类和重写run方法

    创建多线程的第一种方式——创建Thread子类和重写run方法: 第二种方式——实现Runnable接口,实现类传参给父类Thread类构造方法创建线程: 第一种方式创建Thread子类和重写run方 ...

  9. 《Java多线程面试题》系列-创建线程的三种方法及其区别

    1. 创建线程的三种方法及其区别 1.1 继承Thread类 首先,定义Thread类的子类并重写run()方法: package com.zwwhnly.springbootaction.javab ...

随机推荐

  1. IIS支持apk文件

    随着智能手机的普及,越来越多的人使用手机上网,很多网站也应手机上网的需要推出了网站客户端,.apk文件就是安卓(Android)的应用程序后缀名,默认情况下,使用IIS作为Web服务器的无法下载此文件 ...

  2. LINUX PID 1和SYSTEMD

    LINUX PID 1和SYSTEMDhttp://coolshell.cn/articles/17998.html 要说清 Systemd,得先从 Linux 操作系统的启动说起.Linux 操作系 ...

  3. this inspection detects names that should resolved but don't. Due to dynamic dispatch and duck typing, this is possible in a limited but useful number of cases. Top-level and class-level items are sup

    输入第一行代码:import logging;logging.basicConfig(level==logging.INFO) 提示:this inspection detects names tha ...

  4. enzyme design 整体流程及感想

    想起什么来写什么吧. 整体流程(以Ceas2, TPP, G3P为例): 准备蛋白即配体参数文件: 设置CST文件: 准备protocol和flag文件: 运行enzyme_design: 结果处理. ...

  5. python安装包API文档

    在python开发过程中,经常会使用第三方包,或者内置的包. 那么这些包,具体有哪些选项,有哪些方法,你知道吗?下面介绍一种万能方法. 使用命令:<注意,命令里python显示的API版本是根据 ...

  6. Nginx 解析PHP的原理 | CGI、FastCGI及php-fpm的关系

    Nginx解析PHP的原理,CGI/FastCGI以及PHP-Fpm的关系. 一.PHP+Nginx应运而生的场景.随着互联网的发展,用户对此接受面广,数据流的增大使得Web端的运行承载压力日益增大, ...

  7. 连接mysql数据库,创建用户模型

    1.安装与配置python3.6+flask+mysql数据库 (1)下载安装MySQL数据库 (2)下载安装MySQL-python 中间件 (3)pip install flask-sqlalch ...

  8. codeforces #305 E Mike and friends

    原问题可以转化为:给定第k个字符串,求它在L-R的字符串里作为子串出现了多少次 定义子串为字符串的某个前缀的某个后缀(废话) 等价于我们把一个字符串插入到trie里,其过程中每个经过的节点和其向上的f ...

  9. bzoj3437 小P的牧场(斜率优化dp)

    3437: 小P的牧场 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 2025  Solved: 1110[Submit][Status][Discu ...

  10. 配置cron定时任务

    题:配置一个 cron 任务用户 natasha 必须配置一个定时执行任务,每天在本地时间 14:23 时执行命令* /bin/echo hiya 答: # 方法1 # su - natasha # ...