黑马程序员技术交流社区

标题: 多线程的题目 [打印本页]

作者: 王小刚    时间: 2012-3-26 10:25
标题: 多线程的题目
public class TestStart extends Thread
{       
        public void start()
        {
                for(int i=0;i<10;i++)
                {
                        System.out.println("i="+i);
                }
        }

        public static void main(String[] args)
        {
                TestStart test = new TestStart();
                test.start();
        }
}
问能不能编译通过,如果能,输出结果是?是不是多线程?如果不能,请说明理由。

作者: 刘宁    时间: 2012-3-26 10:34
当然能,没什么问题。
结果
i=0
i=1
i=2
i=3
i=4
i=5
i=6
i=7
i=8
i=9
但是不是多线程 1 你没创建线程对象。因此没有启动线程。
2 你没有覆盖父类Thread中的run方法。
作者: 秦超    时间: 2012-3-26 10:36
这应该不能编译通过吧~!因为继承了Thread,但是却没有复写run方法,所以这不算多线程,把start方法换成run方法,就可以编译通过了.
作者: 杨波    时间: 2012-3-26 10:36
能通过编译,输出结果为:
i=0
i=1
i=2
i=3
i=4
i=5
i=6
i=7
i=8
i=9
这是一个多线程,它继承了Tread,是实现多线程的方式之一
作者: 黄奇耀    时间: 2012-3-26 10:37
可以运行,输出结果为上面的for(int i=0;i<10;i++){System.out.println("i="+i);}输出。
不是多线程,start()被重写,没有启动新线程。run()方法内没有方法体。
作者: 秦超    时间: 2012-3-26 10:41
更正一下,这个能编译通过,但是没有run方法,所以不能算是多线程吧~!!
作者: 张小庆    时间: 2012-3-26 16:32
能编译通过,运行结果就是2楼那个,但我认为不是多线程,你这个虽然继承了Thread类,但你没有复写它的run方法,更别说你都没有启动线程了。
作者: 〆_xin_、_跳    时间: 2012-3-26 17:52
你这个方法使用的不是多线程,因为TestStart 类虽然继承了Thread类,但没有实现其run()方法。TestStart test = new TestStart();test.start();,不用启动一个线程,而是调用TestStart类中的start()方法。





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