快速业务通道

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

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

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

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

12.3 多线程使用示例

多线程技术对于初学者来说,是编程思维的一种跳跃,在实际学习时,一定要熟悉线程的基础知识,掌握线程的实现方式,然后就是开始大量的进行实践,从实践中领悟线程编程的奥妙以及实现的原理。

下面通过几个常见的例子演示多线程的基本使用。

12.3.1 定时炸弹

定时炸弹是在电影中常见的一种装置,在该部分就使用多线程技术模拟该功能。实现的功能为:在程序启动以后进行倒计时,当60秒以后程序结束,在程序运行时可以在控制台输入quit控制线程(炸弹)的暂停。

在该示例程序中,开启了一个系统线程(main方法所在的线程),该线程的作用是启动模拟定时炸弹的线程,并且在控制台接受用户的输入,并判断输入的内容是否为quit,如果是则结束模拟定时炸弹的线程,程序结束。

首先来看一下使用继承Thread类的方式实现多线程时的代码示例,代码如下:

package example1; import java.io.*; /** * 模拟定时炸弹线程 */ public class TestTimeBomb1 {  public static void main(String[] args) {   //创建线程和启动线程   TimeBombThread tbt = new TimeBombThread();   //接受控制台输入   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")){       tbt.stopThread(); //结束线程       break; //结束循环      }     }   }catch(Exception e){}  } } package example1; /** * 使用继承Thread类的方式模拟定时炸弹逻辑 */ public class TimeBombThread extends Thread {  int n;  boolean isRun;  public TimeBombThread(){   n = 60;   isRun = true;   start();//启动线程  }  public void run(){   try{     while(isRun){      Thread.sleep(1000); //延迟1秒      System.out.println("剩余时间:" + n);      if(n <= 0){       isRun = false; //结束线程       System.out.println("炸弹爆炸!");       break;      }      n--; //时间减少1     }   }catch(Exception e){}  }  public void stopThread(){   isRun = false;  } }

Java编程那些事儿96——多线程使用示例1(2)

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

在该示例代码中,TestTimeBomb1类中包含的是系统线程,在系统线程中启动模拟定时炸弹的TimeBombThread线程,然后在TestTimeBomb1中接收用户的控制台输入,如果输入的内容是quit则结束线程,程序结束,否则忽略用户的输入,继续等待用户输入。按照前面介绍的IO知识,在接收控制台输入时readLine是阻塞方法,也就是该方法在未获得用户输入时会阻塞系统线程的执行,使系统线程进入到等待状态,等待用户输入。而TimeBombThread实现的逻辑是每隔1秒钟减少一次数值,并输出剩余时间,当剩余时间为零时,结束TimeBombThread线程。这样两个线程就同时工作了,系统线程等待用户输入的同时,模拟定时炸弹的线程继续执行,这样程序中就包含了两个同时执行的流程。

在这里需要特别说明的是,如何控制线程的结束?在本程序中,使用的是让线程自然死亡的方式,在实际控制线程时,当线程的run方法执行结束则线程自然死亡,所以在本程序中通过控制isRun变量使得线程可以自然结束,从而释放

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