Java Runnable不在Callable内部运行
在下面的代码中,我创建了一个callable,它在call()方法中创建了一个Runnable。我的问题是永远不会到达run()-方法(代码不会被执行)。你知道为什么以及如何解决这个问题吗Java Runnable不在Callable内部运行,java,multithreading,concurrency,runnable,callable,Java,Multithreading,Concurrency,Runnable,Callable,在下面的代码中,我创建了一个callable,它在call()方法中创建了一个Runnable。我的问题是永远不会到达run()-方法(代码不会被执行)。你知道为什么以及如何解决这个问题吗 public static void main(String[] args) { Callable<Object> c = new Callable<Object>() { @Override public Object call() thr
public static void main(String[] args) {
Callable<Object> c = new Callable<Object>() {
@Override
public Object call() throws Exception {
Runnable r = new Runnable() {
@Override
public void run() {
System.out.println("hi");
}
};
return null;
}
};
try {
c.call();
} catch (Exception e) {
}
}
publicstaticvoidmain(字符串[]args){
可调用c=新的可调用(){
@凌驾
公共对象调用()引发异常{
Runnable r=新的Runnable(){
@凌驾
公开募捐{
System.out.println(“hi”);
}
};
返回null;
}
};
试一试{
c、 call();
}捕获(例外e){
}
}
Callable c=new Callable(){
@凌驾
公共对象调用()引发异常{
Runnable r=新的Runnable(){
@凌驾
公开募捐{
System.out.println(“hi”);
}
};
r、 run();
返回null;
}
};
试一试{
c、 call();
}捕获(例外e){
}
你知道为什么
其他人已经解释过:您已经编写了创建Runnable
实例的代码,但是您的代码在创建实例后对其没有任何作用。您的代码不会直接调用run()
方法,也不会将实例交给将调用该方法的任何其他对象
…如何解决这个问题
这将取决于您希望代码做什么。有更简单的方法来编写一个打印“hi”的程序,如果这是您想要的
看起来你好像在尝试学习一些东西,但你还没有告诉我们你想学什么。你忘记了调用
r.run()代码>好吧,你实际上没有调用run方法。你可以通过添加一些文本来解释你的例子与OP的例子有什么不同,从而改进这个答案。
Callable<Object> c = new Callable<Object>() {
@Override
public Object call() throws Exception {
Runnable r = new Runnable() {
@Override
public void run() {
System.out.println("hi");
}
};
r.run();
return null;
}
};
try {
c.call();
} catch (Exception e) {
}