快速业务通道

Java编程那些事儿96——多线程使用示例1 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-24
线程占用的资源。

同样的功能也可以使用Timer和TimerTask组合的方式实现,实现的代码如下所示:

package example1; import java.io.*; /** * 模拟定时炸弹线程 */ public class TestTimeBomb2 {  public static void main(String[] args) {   //创建线程和启动线程   TimeBombTimerTask tbtt = new TimeBombTimerTask();   //接受控制台输入   BufferedReader br = new BufferedReader(   new InputStreamReader(System.in));   String line;   try{     while(true){      System.out.println("输入quit结束线程:");      //获得控制台输入      line = br.readLine();      //判断是否是quit      if(line.equals("quit")){       tbtt.stopThread(); //结束线程       break; //结束循环      }     }   }catch(Exception e){}  } } package example1; import java.util.*; /** * 使用Timer和TimerTask组合模拟定时炸弹 */ public class TimeBombTimerTask extends TimerTask {  int n;  Timer t;  boolean isRun;  public TimeBombTimerTask(){   n = 60;   isRun = true;   t = new Timer();   t.schedule(this, 0); //启动线程  }  public void run() {   try{     while(isRun){       Thread.sleep(1000); //延迟1秒       System.out.println("剩余时间:" + n);       if(n <= 0){        stopThread(); //结束线程        System.out.println("炸弹爆炸!");        break;  //结束循环       }       n--; //时间减少1     }   }catch(Exception e){}  }  public void stopThread(){   isRun = false;   t.cancel();  } }

在该示例代码中,实现的原理和前面的类似,TestTimeBomb2类实现系统线程,功能是启动模拟定时炸弹的线程,并接收用户的控制台输入。而TimeBombTimerTask类实现模拟定时炸弹的线程,在该类内部包含启动线程的Timer对象,当构造该类的对象时,不仅完成该类的初始化,而且启动线程。

在控制Timer启动的线程结束时,首先结束当前的TimerTask线程,然后再调用Timer对象的cancel方法结束Timer对象的线程,这样才可以真正停止这种方式启动的线程。

至于使用实现Runnable方式实现线程的方式,和继承Thread类的实现几乎一致,读者可以根据第一种方式的实现独自进行实现,这里就不再重复实现了。

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