A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 芦子骐 中级黑马   /  2013-3-26 23:56  /  1345 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 芦子骐 于 2013-3-27 00:44 编辑

今天我试着用一个类实现Runnable接口的run方法,然后在函数中这样使用,为什么找不到start方法???代码如下:

//主函数
class test
{
        public static void main(String[] args)
        {

                //创建一个Runnable类型的引用变量r 指向一个out对象,这样不是可以么?
                Runnable r = new out();
                r.start();
        }
}

// 创建一个out类实现Runnable接口
class out implements Runnable
{
        public void run()
        {
                while(true)
                {
                        System.out.println("out is run !!!!!!");
                }
        }
}

评分

参与人数 1技术分 +1 收起 理由
洪建超 + 1

查看全部评分

4 个回复

倒序浏览
没有创建out对象吧
回复 使用道具 举报
我说下我的理解吧,有什么不对请指出。一起学习
首先要搞清楚 Runnable 是什么?为什么存在?

它是一个接口,他里面只有一个run(),所以你不能调用start()是正常的事情

为何存在?
Java只支持单继承。
假设Student继承Person若没有Runnable()接口,就无法创建多线程了(也就是说无法再继承Thread时,只能实现Runnable)。实现方式好处:避免了单继承的局限性。

然后我修改了下你的代码:
class test
{
        public static void main(String[] args)
        {

                //创建一个Runnable类型的引用变量r 指向一个out对象,这样不是可以么?
                Runnable r = new out();
                Thread t = new Thread(r);
                t.start();
        }
}

// 创建一个out类实现Runnable接口
class out implements Runnable
{
        public void run()
        {
                while(true)
                {
                        System.out.println("out is run !!!!!!");
                }
        }
}

就是加了个
                 Thread t = new Thread(r);
                t.start();

希望可以帮到你。

点评

Thread t = new Thread(r); t.start(); 这个是正解!!很有用~  发表于 2013-3-27 00:43
给力!!太给力了!!!刚才我去查了一下JDK , Runnable接口中只有一个run()方法。  发表于 2013-3-27 00:42

评分

参与人数 1技术分 +1 收起 理由
洪建超 + 1

查看全部评分

回复 使用道具 举报
孙百鑫 发表于 2013-3-27 00:02
没有创建out对象吧

他里头是多态创建的OUT对象
回复 使用道具 举报
start()是线程Therth类中的方法
run()是Runnable接口中的方法    好好看下视频 实现 接口,怎么运行线程的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马