3 回答
TA贡献1890条经验 获得超9个赞
有没有办法从 Callable 创建线程?
简短回答:不Thread。API 需要一个Runnable不是Callable.
您可以使用 a 的Runnable包装器解决此问题Callable,尽管从 中获取结果Callable有点麻烦!一个更好的主意是使用ExecutorService. 这使您可以避免不创建太多线程和(或者)管理自己的线程池的问题。
注意到您的示例并不真正需要Callable. 您正在返回构造函数Set中提供的a AddNumImmediately。调用者可以简单地保留对该Set对象的引用。
TA贡献1856条经验 获得超11个赞
您不能从 callable 创建新线程。就在那里。对于一个新线程,线程必须出现。据说您可以将 FurtureTask 与 callable 和 Thread 一起使用来获取结果。你可以尝试这样的事情:
FutureTask<String> f1 = new FutureTask<String>(new Callable<String>() {
public String call() throws InterruptedException {
Thread.sleep(1000);
return "A constant from " + Thread.currentThread().getName();
}
});
Thread t = new Thread(f1);
t.start();
System.out.println("Calling Get " + Thread.currentThread().getName());
System.out.println(f1.get());
System.out.println("Got Get");
会给你输出:
调用获取主
来自 Thread-0 的常量
得到了
添加回答
举报
