Runnable不在Callable中运行

时间:2017-03-02 12:40:41

标签: 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() throws Exception {

            Runnable r = new Runnable() {

                @Override
                public void run() {
                    System.out.println("hi");

                }
            };

            return null;
        }
    };

    try {
        c.call();
    } catch (Exception e) {

    }
}

2 个答案:

答案 0 :(得分:0)

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

        }

答案 1 :(得分:0)

  

你知道为什么......

已经由其他人解释过:您编写的代码创建了Runnable实例,但您的代码在创建实例后不对该实例执行任何操作。您的代码不直接调用run()方法,您的代码也不会将实例移交给调用该方法的任何其他对象。

  

......以及如何解决这个问题?

这取决于您希望代码做什么。有一种更简单的方法来编写打印&#34; hi&#34;如果那就是你想要的。

看起来你正在努力学习一些东西,但你还没告诉我们你想要学习什么。