快速业务通道

Java多线程编程初步 - 编程入门网

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

Java多线程编程初步

时间:2007-11-05

什么是多线程编程

多线程编程技术是Java语言的重要特点。多线程编程的含义是将程序任务分成几个并行的子任务。特别是在网络编程中,你会发现很多功能是可以并发执行的。比如网络传输速度较慢、用户输入速度较慢,你可以用两个独立的线程去完成这两个功能,而不影响正常的显示或其它功能。

多线程是与单线程比较而言的,普通的Windows采用单线程程序结构,其工作原理是:主程序有一个消息循环,不断从消息队列中读入消息来决定下一步所要干的事情,一般是针对一个函数,只有等这个函数执行完之后,主程序才能接收另外的消息来执行。比如子函数功能是在读一个网络数据,或读一个文件,只有等读完这个数据或文件才能接收下一个消息。在执行这个子函数过程中你什么也不能干。但往往读网络数据和等待用户输入有很多时间处于等待状态,多线程利用这个特点将任务分成多个并发任务后,就可以解决这个问题。

Java中的线程类

要学会Java中的多线程编程,就得知道如何实现支持多线程的类。Java中实现多线程的类有两种方法:

1.扩展java.lang.Thread类,用它覆盖Thread类的run方法。

2.生成实现java.lang.Runnable接口的类并将其它的实例与java.lang.Thread实例相关联。

Thread类是负责向其它类提供线程支持的最主要的类,要使用一个类具有线程功能,在Java中只要简单地从Thread类派生一个子类就可以了扩展Thread类,如printThread.java。

下面我们将通过实例来介绍如何使用这两种方法编写自己的多线程应用程序。

创建java.lang.Thread类的子类

Thread类最重要的方法是run方法。run方法是新线程执行的方法,因此生成java.lang.Thread的子类时,必须有相应的run方法。

//PrintThread.java public class PrintThread extends Thread//继承Tread类 private int count=0 //定义一个count变量用于统计打印的次数并共享变量 public static void mainString args //main方法开始 PrintThread p=new PrintThread //创建一个线程实例 p.start //执行线程 for{;;} //主线程main方法执行一个循环,for执行一个死循环  count++ System.out.printcount+″:Main\n″ //主线程中打印count +“main”变量的值,并换行  public void run //线程类必须有的run()方法 for{;;}   count++ System.out.printcount+″:Thread\n″ 

上面这段程序便是继承java.lang.Tread并覆盖run的方法。用Java 虚拟机启动程序时,这个程序会先生成一个线程并调用程序主类的main方法。这个程序中的main方法生成新线程,连接打印“Thread”。在启动线程之后,主线程继续打印“Main”。

编译并执行这个程序,然后立即按“Ctrl+C”键中断程序,你会看到上面所述的两个线程不断打印出:XXX:main…..XXX:Thread…. XXX代表的是数字,也就是上面count的值 。在笔者的机器上,不同时刻这两个线程打印的次数不一样,先打印20个main(也就是先执行20次主线程)再打印出50次Thread,然后再打印main……

Java多线程编程初步(2)

时间:2007-11-05

提示:为了便于查看该程序的执行结果,你可以将执行结果导入一个文本文件,然后打开这个文件查看各线程执行的情况。如运行:

javac PrintThread.java

Java PrintThread>1.txt

第一个命令javac PrintThread.java是编译java程序,第二个是执行该程序并将结果导入1.txt文件。这样,打开这个文件,你就可以看见详细的结果了(注意:程序的执行时间不能太长,不然生成的1.txt文件会很庞大)。当然你可以

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号