黑马程序员技术交流社区
标题:
线程问题
[打印本页]
作者:
赵红萍
时间:
2012-10-25 12:46
标题:
线程问题
创建一个线程可以继承Thread类,也可以继承Runable接口,那么用它们两个创造出的线程会不一样吗?启动线程有一个strat()方法和run()方法,它俩又有什么不同?
作者:
毛标
时间:
2012-10-25 12:53
线程应该是一样的
如果继承Thread类的话,复写了期中的run()可以直接用Thread中的start()直接启动
如果是实现Runable接口的话,复写了期中的run(),还要创建1个Thread类的对象,将实现类作为参数传递给Thread,在调用start()
作者:
邹海洋
时间:
2012-10-25 12:54
1.继承Thread类,每new一次都是一个新线程的建立;实现Runnable接口,可以只创建一个线程,同时被多方共享。
2.run()方法只是Thread类或Runnable接口中定义的要运行的代码,start()方法是开启线程,并执行run()方法中的内容。
作者:
鲁中需
时间:
2012-10-25 12:55
本帖最后由 鲁中需 于 2012-10-25 12:56 编辑
1.实现(接口)方式和继承方式的区别:
实现方式好处:避免了单继承的局限性。
在定义线程时,建议使用实现Runnable方式。
两种方式区别:(代码存放位置不同)
继承Thread:线程代码存放Thread子类run方法中。
实现Runnable,线程代码存在接口的子类的run方法。
2.启动线程只有一个方法,那就是调用start()方法,这样会启动线程并自动调用run()方法;
而只调用run()方法,仅仅是普通的函数调用,并没有启动线程。
作者:
怪盗急得
时间:
2012-10-25 12:56
继承Tread类的方式,通过复写run方法,创建子类对象,然后调用start方法,线程才开启。
实现Runnable接口的方式,要通过复写run方法,创建接口的子类实例对象,然后将Runnable接口的子类对象传递给Tread类的实例对象,然后调用start方法开启线程。
run方法不是开启线程的方法,开启线程的方法是start方法。如果单单只是调用run方法,那么只是通过主函数的线程来执行run方法中的代码而已,而start方法可以开启一个新的线程,来执行run方法中的代码。
作者:
给生活加点料
时间:
2012-10-25 13:36
1.java中支持多实现,而不支持多继承。
如果使用了继承,那么我们程序的可扩展性下降,因为一个类只能有一个父类
使用实现,我们可以实现多个接口,不影响我们程序的扩展性。
2.关于数据共享
2.1如果使用继承Thread类来实现数据共享,那么这个数据要static,它的生命周期太长.
2.2如果使用实现Runnable,这时候只需有一个实现Runnable对象将其传递给
Thread类的构造方法,就可以实现多个线程操作同一个数据。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2