Callable接口,开启线程
我们知道
new Thread().start()//这是有且只有唯一启动线程的方法
查看Thread()源码
public Thread(Runnable target, String name) { init(null, target, name, 0); }
发现需要的参数是Runnable类型
那么我们现在要做的就是怎么把Callable和Runnable连接起来,
查看JDK文档
实现
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()"; } }
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决