实现多线程有两种方法

上传人:平*** 文档编号:14596133 上传时间:2017-11-01 格式:DOC 页数:6 大小:35.45KB
返回 下载 相关 举报
实现多线程有两种方法_第1页
第1页 / 共6页
实现多线程有两种方法_第2页
第2页 / 共6页
实现多线程有两种方法_第3页
第3页 / 共6页
实现多线程有两种方法_第4页
第4页 / 共6页
实现多线程有两种方法_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《实现多线程有两种方法》由会员分享,可在线阅读,更多相关《实现多线程有两种方法(6页珍藏版)》请在金锄头文库上搜索。

1、实现多线程有两种方法: Thread 类继承和 Runnable 接口实现一、创建线程的第一种方式:继承 Thread 类。 步骤:1,定义类继承 Thread。2,复写 Thread 类中的 run 方法。目的:将自定义代码存储在 run 方法。让线程运行。/run();仅仅是对象调用方法。而线程创建了,并没有运行。3,调用线程的 start 方法,该方法两个作用:启动线程,调用 run 方法。Demo d = new Demo();/创建好一个线程。/d.start();/开启线程并执行该线程的 run 方法。d.run();/仅仅是对象调用方法。而线程创建了,并没有运行。二、创建线程的第

2、二种方式:实现 Runable 接口 步骤:1,定义类实现 Runnable 接口2,覆盖 Runnable 接口中的 run 方法。将线程要运行的代码存放在该 run 方法中。3,通过 Thread 类建立线程对象。4,将 Runnable 接口的子类对象作为实际参数传递给 Thread 类的构造函数。为什么要将 Runnable 接口的子类对象传递给 Thread 的构造函数。因为,自定义的 run 方法所属的对象是 Runnable 接口的子类对象。所以要让线程去指定对象的 run 方法。就必须明确该 run方法所属对象。5,调用 Thread 类的 start 方法开启线程并调用 Ru

3、nnable 接口子类的 run 方法。l 实现方式和继承方式有什么区别呢? 实现方式好处:避免了单继承的局限性。在定义线程时,建立使用实现方式。两种方式区别:继承 Thread: 线程代码存放 Thread 子类 run 方法中。实现 Runnable,线程代码存在接口的子类的 run 方法。实现 Runnable 接口相对于继承 Thread 类来说,有如下的显著优势:1.适合多个相同代码的线程去处理同一个资源的情况2.可以避免由于 java 的单继承特性带来的局限3.增强了程序的健壮性,代码能够被多个线程共享,代码与数据时独立的给你个例子,你自己取运行就知道了,好好对比下1 class

4、MyThread extends Thread / 继承 Thread 类,作为线程的实现类2 private int ticket = 5 ; / 表示一共有 5 张票3 public void run() / 覆写 run()方法,作为线程 的操作主体4 for(int i=0;i0)6 System.out.println(卖票:ticket = + ticket-) ;7 8 9 10 ;11 public class ThreadDemo012 public static void main(String args)13 MyThread mt1 = new MyThread() ;

5、 / 实例化对象14 MyThread mt2 = new MyThread() ; / 实例化对象15 MyThread mt3 = new MyThread() ; / 实例化对象16 mt1.run() ; / 调用线程主体17 mt2.run() ; / 调用线程主体18 mt3.run() ; / 调用线程主体19 20 ;21 22 23 class MyThread implements Runnable / 继承 Thread类,作为线程的实现类24 private int ticket = 5 ; / 表示一共有 5 张票25 public void run() / 覆写 r

6、un()方法,作为线程 的操作主体26 for(int i=0;i0)28 System.out.println(卖票:ticket = + ticket-) ;29 30 31 32 ;33 public class RunnableDemo034 public static void main(String args)35 MyThread mt = new MyThread() ; / 实例化对象36 new Thread(mt).run() ; / 调用线程主体37 new Thread(mt).run() ; / 调用线程主体38 new Thread(mt).run() ; / 调

7、用线程主体39 40 ;简单的来说,就是继承和实现接口的区别。1、当使用继承的时候,主要是为了不必重新开发,并且在不必了解实现细节的情况下拥有了父类我所需要的特征。它也有一个很大的缺点,那就是如果我们的类已经从一个类继承(如小程序必须继承自 Applet 类) ,则无法再继承 Thread 类,2、java 只能单继承,因此如果是采用继承 Thread 的方法,那么在以后进行代码重构的时候可能会遇到问题,因为你无法继承别的类了,在其他的方面,两者之间并没什么太大的区别。3、implement Runnable 是面向接口,扩展性等方面比 extends Thread 好。4、使用 Runnable 接口来实现多线程使得我们能够在一个类中包容所有的代码,有利于封装,它的缺点在于,我们只能使用一套代码,若想创建多个线程并使各个线程执行不同的代码,则仍必须额外创建类,如果这样的话,在大多数情况下也许还不如直接用多个类分别继承 Thread 来得紧凑。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号