博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java种线程池多线程有返回值_Java多线程-新特性-有返回值的线程
阅读量:7025 次
发布时间:2019-06-28

本文共 1282 字,大约阅读时间需要 4 分钟。

在Java5之前,线程是没有返回值的,常常为了“有”返回值,破费周折,而且代码很不好写。或者干脆绕过这道坎,走别的路了。

现在Java终于有可返回值的任务(也可以叫做线程)了。

可返回值的任务必须实现Callable接口,类似的,无返回值的任务必须Runnable接口。

执行Callable任务后,可以获取一个Future的对象,在该对象上调用get就可以获取到Callable任务返回的Object了。

下面是个很简单的例子:

package com.ljq.test.thread;

import java.util.concurrent.Callable;

import java.util.concurrent.ExecutionException;

import java.util.concurrent.ExecutorService;

import java.util.concurrent.Executors;

import java.util.concurrent.Future;

public class CallableFutureTest {

@SuppressWarnings("unchecked")

public static void main(String[] args) throws ExecutionException,

InterruptedException {

CallableFutureTest test = new CallableFutureTest();

// 创建一个线程池

ExecutorService pool = Executors.newFixedThreadPool(2);

// 创建两个有返回值的任务

Callable c1 = test.new MyCallable("A");

Callable c2 = test.new MyCallable("B");

// 执行任务并获取Future对象

Future f1 = pool.submit(c1);

Future f2 = pool.submit(c2);

// 从Future对象上获取任务的返回值,并输出到控制台

System.out.println(">>>" + f1.get().toString());

System.out.println(">>>" + f2.get().toString());

// 关闭线程池

pool.shutdown();

}

@SuppressWarnings("unchecked")

class MyCallable implements Callable {

private String name;

MyCallable(String name) {

this.name = name;

}

public Object call() throws Exception {

return name + "任务返回的内容";

}

}

}

>>>A任务返回的内容>>>B任务返回的内容

转载地址:http://gzsxl.baihongyu.com/

你可能感兴趣的文章
RDA PQ工具使用 (Adi Analysis)
查看>>
iOS中的崩溃类型
查看>>
ACdreamoj 1011(树状数组维护字符串hash前缀和)
查看>>
RPC与REST的差别
查看>>
亚马逊云EC2做PPTP SERVER的笔记
查看>>
MySQL SELECT 语句
查看>>
MFC文档(SDI)应用:画图程序(画圆、画线、鼠标事件)
查看>>
LEETCODE
查看>>
Eclipse-Java代码规范和质量检查插件-Checkstyle
查看>>
命题和判断有什么区别和联系
查看>>
微信即将支持App直接打开小程序
查看>>
织云Lite发布:详解包管理核心能力
查看>>
029_mac下nginx管理
查看>>
hadoop04---shell
查看>>
2018快手实习笔试题
查看>>
Redis Sentinel 情况下bind地址设置
查看>>
jQuery事件
查看>>
C# 操作Word文本框——插入表格/读取表格/删除表格
查看>>
解决 Popup 位置不随窗口移动更新的问题
查看>>
常用单词7
查看>>