快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-24
tt1和mtt2.而程序的执行结果是:

开始启动 启动线程1 启动线程2 线程1:0 线程1:1 线程1:2 线程1:3 线程1:4 线程1:5 线程1:6 线程1:7 线程1:8 线程1:9 线程2:0 线程2:1 线程2:2 线程2:3 线程2:4 线程2:5 线程2:6 线程2:7 线程2:8 线程2:9

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

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

从程序的执行结果可以看出,在Test4类中mtt1和mtt2都被启动,按照前面的schedule方法介绍,这两个线程均会在线程启动以后1000毫秒后获得执行。但是从实际执行效果却可以看出这两个线程不是同时执行的,而是依次执行,这主要是因为一个Timer启动的多个TimerTask之间会存在影响,当上一个线程未执行完成时,会阻塞后续线程的执行,所以当线程1执行完成以后线程2才获得了执行。

如果需要线程1和线程2获得同时执行,则只需要分别使用两个Timer启动TimerTask线程即可,启动的示例代码如下:

import java.util.Timer; /** * 测试类 */ public class Test5 {  public static void main(String[] args) {   //创建Timer   Timer t1 = new Timer();   Timer t2 = new Timer();   //创建TimerTask   MyTimerTask mtt1 = new MyTimerTask("线程1:");   MyTimerTask mtt2 = new MyTimerTask("线程2:");   //启动线程   System.out.println("开始启动");   t1.schedule(mtt1, 1000);   System.out.println("启动线程1");   t2.schedule(mtt2, 1000);   System.out.println("启动线程2");  } }

在该示例中,分别使用两个Timer对象t1和t2,启动两个TimerTask线程对象mtt1和mtt2,两者之间不互相干扰,所以达到了同时执行的目的。

在使用上面的示例进行运行时,由于Timer自身的线程没有结束,所以在程序输出完成以后程序还没有结束,需要手动结束程序的执行。例如在Eclipse中可以点击控制台上面的红色“Teminate”按钮结束程序。

12.2.4 小结

关于线程的三种实现方式,就简单的介绍这么多。其实无论那种实现方式,都可以实现多线程,在语法允许的前提下,可以使用任何一种方式实现。比较而言,实现Runnable接口方式要通用一些。

只是从语法角度介绍线程的实现方式,还是无法体会到线程实现的奥妙,下面将通过几个简单的示例来体会线程功能的强大,并体会并发编程的神奇,从而能够进入并发编程的领域发挥技术的优势。

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