java中为什么实现了一个接口就会产生相应的一些功能,比如实现runnable接口的类,这个类就是一个线程类

决定的温度 发布于 2015/08/03 20:20
阅读 1K+
收藏 0
加载中
1
maradona
maradona

实现这个接口并不代表是线程类,真正开启一个线程应该是Thread类中的 private native void start0(); 这个本地方法

当然俺也是看到你的问题才想了下,见识比较浅薄,或许有错误,你要辩证的看待俺的观点

0
小七酱
小七酱

如果从oop的思想来想,动物类被任何一个类继承,则这个继承者就会具有父类的某些特性!就能理解了!

0
何本华
何本华

@红薯

这个页面报bug啊

if($('#best_'+anwserId).attr('class')

TypeError: $(...).attr(...) is undefined


0
BK灬
BK灬
接口中一般都有公共的方法,为了不去写重复的代码呗.比如男人和女人都要跑步,那么运动这个类中就有跑步的方法,男人和女人都实现这个运动接口,不就不用再在自己的类中重复写了吗?
0
蓝水晶飞机
蓝水晶飞机

LZ,实现Runnable接口的类不是线程类吧!

Runnable 只是一个接口,它在API中被设计为可以被线程‘运行’的抽象。

Thread线程类则不同,它跟JVM内部底层的线程实现有直接联系。


以前经常听老师说,实现某接口就具有某种能力。其实简单理解,就是具有某些公共的属性或者方法,就像国际标准,你的系统中,或比如JDK中的Runnable,任何实现Runnable接口的类都会有public void run 方法。这样子,底层的服务设计中就可以用这么一个类型,你根据业务需要定义任何类,只要实现了Runnable接口皆可以被调用。

蓝水晶飞机
蓝水晶飞机
Java中,一个类只能继承一个父类,但可以实现多个接口。
0
猫神
猫神

LZ,你可以看看Thread源码,thread实现runnable接口

Thread类start方法,调用本地方法start0()


public synchronized void start() {

        /**
         * This method is not invoked for the main method thread or "system"
         * group threads created/set up by the VM. Any new functionality added
         * to this method in the future may have to also be added to the VM.
         *
         * A zero status value corresponds to state "NEW".
         */
        if (threadStatus != 0)
            throw new IllegalThreadStateException();


        /* Notify the group that this thread is about to be started
         * so that it can be added to the group's list of threads
         * and the group's unstarted count can be decremented. */
        group.add(this);


        boolean started = false;
        try {
            start0();
            started = true;
        } finally {
            try {
                if (!started) {
                    group.threadStartFailed(this);
                }
            } catch (Throwable ignore) {
                /* do nothing. If start0 threw a Throwable then
                  it will be passed up the call stack */
            }
        }
    }


    private native void start0();
0
java9
java9
接口常常用来定义某种行为,实现了这个接口就具有了某种行为的具体动作。
0
东胜神洲
东胜神洲

接口通常表示一种“规范”,也是一种“约定”。。就 Runnable 来说,为什么会有这个接口呢?

通常可以这样理解:

1) Java 只支持单继承,如果只有一个 Thread 类。往往会“强迫” 使用者“继承” Thread,从而让这个类失去“继承”其他类的机会。这显然不是一个好的解决方案,或者说,不是一个 OO 解决方案

2)接口通常是一个抽象,抽象的好处就是有更广的”操作隐喻“。引入 Runnable 接口,不但能够避免 1) 所造成的局限性,同时带来抽象上的应用弹性。Runnable 虽然常用于线程,但是当你理解为任务的时候,Runnable 也可以作为命令接口来使用,从隐喻的角度来看,Runnable 接口比单纯的线程要广得多。


0
Qiurf
Qiurf
因为Thread类有带有Runable 参数的构造器,其他同理。
0
纯正的 面向对象 思想
返回顶部
顶部