黑马程序员技术交流社区

标题: 关于线程问题 [打印本页]

作者: 芦子骐    时间: 2013-3-26 23:56
标题: 关于线程问题
本帖最后由 芦子骐 于 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 !!!!!!");
                }
        }
}

作者: 孙百鑫    时间: 2013-3-27 00:02
没有创建out对象吧
作者: HM朱蛟    时间: 2013-3-27 00:21
我说下我的理解吧,有什么不对请指出。一起学习
首先要搞清楚 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();

希望可以帮到你。
作者: HM朱蛟    时间: 2013-3-27 00:24
孙百鑫 发表于 2013-3-27 00:02
没有创建out对象吧

他里头是多态创建的OUT对象
作者: 余善航    时间: 2013-3-27 01:03
start()是线程Therth类中的方法
run()是Runnable接口中的方法    好好看下视频 实现 接口,怎么运行线程的





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2