Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Runnable不在Callable内部运行_Java_Multithreading_Concurrency_Runnable_Callable - Fatal编程技术网

Java Runnable不在Callable内部运行

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

在下面的代码中,我创建了一个callable,它在call()方法中创建了一个Runnable。我的问题是永远不会到达run()-方法(代码不会被执行)。你知道为什么以及如何解决这个问题吗

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) {

        }