线程 - 带返回值的多线程

简介: 线程 - 带返回值的多线程


之前我们使用多线程要么是继承Thread类,要么是实现Runnable接口,然后重写一下run()方法即可。

但是只有的话如果有死锁、对共享资源的访问和随时监控线程状态就不行了,于是在Java5之后就有了Callable接口。

简单实现带返回值的线程

代码如下:CallableFuture类

packagecom.test.thread;
importjava.util.concurrent.ExecutionException;
importjava.util.concurrent.ExecutorService;
importjava.util.concurrent.Executors;
importjava.util.concurrent.Future;
publicclassCallableFuture {
publicstaticvoidmain(String[] args) {
//创建一个线程池ExecutorServicepool=Executors.newFixedThreadPool(3) ;
//创建三个有返回值的任务CallableTestcallableTest1=newCallableTest("我是线程1") ;
CallableTestcallableTest2=newCallableTest("我是线程2") ;
CallableTestcallableTest3=newCallableTest("我是线程3") ;
Futurefuture1=pool.submit(callableTest1) ;
Futurefuture2=pool.submit(callableTest2) ;
Futurefuture3=pool.submit(callableTest3) ;
try {
System.out.println(future1.get().toString());
System.out.println(future2.get().toString());
System.out.println(future3.get().toString());
        } catch (InterruptedExceptione) {
e.printStackTrace();
        } catch (ExecutionExceptione) {
e.printStackTrace();
        }finally{
pool.shutdown();
        }
    }
}

代码如下:CallableTest类

packagecom.test.thread;
importjava.util.concurrent.Callable;
publicclassCallableTestimplementsCallable {
privateStringthreadName ;
publicCallableTest(StringthreadName) {
this.threadName=threadName;
    }
@OverridepublicObjectcall() throwsException {
returnthreadName+"返回的信息";
    }
}

运行结果

我是线程1返回的信息

我是线程2返回的信息

我是线程3返回的信息

目录
相关文章
|
21天前
|
存储 Java 数据库连接
java多线程之线程通信
java多线程之线程通信
|
1天前
|
监控 安全 Java
【多线程学习】深入探究阻塞队列与生产者消费者模型和线程池常见面试题
【多线程学习】深入探究阻塞队列与生产者消费者模型和线程池常见面试题
|
1天前
|
缓存 安全 Java
多线程--深入探究多线程的重点,难点以及常考点线程安全问题
多线程--深入探究多线程的重点,难点以及常考点线程安全问题
|
1天前
|
数据采集 安全 Java
Python的多线程,守护线程,线程安全
Python的多线程,守护线程,线程安全
|
5天前
|
监控 Java 调度
Java多线程实战-从零手搓一个简易线程池(四)线程池生命周期状态流转实现
Java多线程实战-从零手搓一个简易线程池(四)线程池生命周期状态流转实现
|
5天前
|
设计模式 Java
Java多线程实战-从零手搓一个简易线程池(三)线程工厂,核心线程与非核心线程逻辑实现
Java多线程实战-从零手搓一个简易线程池(三)线程工厂,核心线程与非核心线程逻辑实现
|
5天前
|
Java 测试技术
Java多线程实战-从零手搓一个简易线程池(二)线程池实现与拒绝策略接口定义
Java多线程实战-从零手搓一个简易线程池(二)线程池实现与拒绝策略接口定义
|
5天前
|
存储 安全 Java
Java多线程实战-从零手搓一个简易线程池(一)定义任务等待队列
Java多线程实战-从零手搓一个简易线程池(一)定义任务等待队列
|
5天前
|
存储 消息中间件 Java
Java多线程实战-异步操作日志记录解决方案(AOP+注解+多线程)
Java多线程实战-异步操作日志记录解决方案(AOP+注解+多线程)
|
5天前
|
缓存 Java 测试技术
Java多线程实战-实现多线程文件下载,支持断点续传、日志记录等功能
Java多线程实战-实现多线程文件下载,支持断点续传、日志记录等功能