Java中的一个简单的线程场景,其中Runnable接口不需要由Thread实现类实现

Bha*_*esh 0 java

让我们看一下下面的代码吧,它完全正常工作.

final class DemoThread
{
    public void temp()
    {
        new Thread(new Runnable()
        {
            public void run()
            {
                System.out.println( "Isn't it great ?" ) ;
            }
        } ) .start() ;
    }
}

final public class Main
{
    public static void main(String[] args)
    { 
        new DemoThread().temp();
    }
}
Run Code Online (Sandbox Code Playgroud)

它工作正常并显示消息不是很好吗?在控制台上.这里唯一的问题是为什么Runnable接口不需要由类DemoThread实现

Jon*_*eet 5

Runnable正被执行匿名内部类的内temp方法:

new Thread(new Runnable()
{
    public void run()
    {
        System.out.println( "Isn't it great ?" ) ;
    }
} ) .start() ;
Run Code Online (Sandbox Code Playgroud)

鉴于实例DemoThread 没有被传递到Thread构造函数,它是否实现Runnable是完全正交如何线程运行.

您的代码与此类似:

final class DemoThread
{
    public void temp()
    {
        new Thread(new Anonymous()).start();
    }

    private class Anonymous implements Runnable
    {
        public void run()
        {
            System.out.println( "Isn't it great ?" ) ;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这会让你更清楚吗?