Callable接口,开启线程

我们知道

new Thread().start()//这是有且只有唯一启动线程的方法

查看Thread()源码

public Thread(Runnable target, String name) {
init(null, target, name, 0);
}

发现需要的参数是Runnable类型

那么我们现在要做的就是怎么把Callable和Runnable连接起来,
查看JDK文档
image
image

实现

package com.luoKing.Callable;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
/*
*
* 使用Runnable的实现类FutureTask来连接Callable接口
*
* */
public class callableTest {
public static void main(String[] args) throws ExecutionException, InterruptedException {
FutureTask futureTask = new FutureTask(new call());//使用Runnable的实现类FutureTask来连接Callable接口
new Thread(futureTask,"A").start();//启动线程的唯一方式
new Thread(futureTask,"B").start();//callable有缓存
String result = (String)futureTask.get();//由于要拿到运算结果,所以这里会发生阻塞
System.out.println(result);
}
}
class call implements Callable<String>{
@Override
public String call() throws Exception {
System.out.println("1024");
return "call()";
}
}
posted @   小罗要有出息  阅读(156)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
点击右上角即可分享
微信分享提示