快速业务通道

Java编程那些事儿94——多线程实现方式1 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-24

Java编程那些事儿94——多线程实现方式1

时间:2010-03-15 csdn 陈跃峰

12.2 多线程实现方式

线程的概念虽然比较复杂,但是在Java语言中实现线程却比较简单,只需要按照Java语言中对于线程的规定进行编程即可。

在实现线程编程时,首先需要让一个类具备多线程的能力,继承Thread类或实现Runnable接口的类具备多线程的能力,然后创建线程对象,调用对应的启动线程方法开始执行即可实现多线程编程。

在一个程序中可以实现多个线程,多线程编程指在同一个程序中启动了两个或两个以上的编程形式。当启动的线程数量比较多时,对于系统资源的要求比较多,所以程序支持的最大线程数量和计算机的硬件配置相关。

在实际实现线程时,Java语言提供了三种实现方式:

1、继承Thread类

2、实现Runnable接口

3、使用Timer和TimerTask组合

下面依次介绍每种实现方式的代码编写,以及各种实现之间的区别比较。

12.2.1 继承Thread类

如果一个类继承了Thread类,则该类就具备了多线程的能力,则该类则可以以多线程的方式进行执行。

但是由于Java语言中类的继承是单重继承,所以该方式受到比较大的限制。

下面以一个简单的示例介绍该种多线程实现方式的使用以及启动线程的方式。示例代码如下所示:

/** * 以继承Thread的方式实现线程 */ public class FirstThread extends Thread{  public static void main(String[] args) {   //初始化线程   FirstThread ft = new FirstThread();   //启动线程   ft.start();   try{    for(int i = 0;i < 10;i++){     //延时1秒     Thread.sleep(1000);     System.out.println("main:" + i);    }   }catch(Exception e){}  }  public void run(){   try{    for(int i = 0;i < 10;i++){     //延时1秒     Thread.sleep(1000);     System.out.println("run:" + i);    }   }catch(Exception e){}  } }

Java编程那些事儿94——多线程实现方式1(2)

时间:2010-03-15 csdn 陈跃峰

在该程序中,通过使FirstThread继承Thread类,则FirstThread类具备了多线程的能力,按照Java语言线程编程的规定,线程的代码必须书写在run方法内部或者在run方法内部进行调用,在示例的代码中的run方法实现的代码作用是每隔1秒输出一行文字。换句话说,run方法内部的代码就是自定义线程代码,或者说,自定义线程的代码必须书写在run方法的内部。

在执行FirstThread类时,和前面的执行流程一样。当执行FirstThread类时,Java虚拟机将开启一个系统线程来执行该类的main方法,main方法的内部代码按照顺序结构进行执行,首先执行线程对象的初始化,然后执行调用start方法。该行代码的作用是启动线程,在执行start方法时,不阻塞程序的执行,start方法的调用立刻返回,Java虚拟机以自己的方式启动多线程,开始执行该线程对象的run方法。同时系统线程的执行流程继续按照顺序执行main方法后续的代码,执行main方法内部的输出。

这样,在FirstThread执行时,就有了两个同时执行的流程:main流程和自定义run方法流程,换句专业点的话来说,就是该程序在执行时有两个线程:系统线程和自定义线程。这个同时执行可以从该程序的执行结果中获得更加直接的证明。

该程序的执行结果为:

run:0 main:0 main:1 run:1 main:2 run:2 main:3 run:3 main:4 run:4 main:5 run:5 main:6 run:6 main:7 run:7 main:8 run:8 main:9 run:9

从执行结果可以看到两个线程在同时执行,这将使我们进入多线程编程的时代,进入并发编程的领域,体会神奇的多线程编程的魔力。

由于两个线程中的延迟时间——1秒,是比较长的,所以看到的结果

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号