当前位置: 首页 > 编程语言 > Java > 正文

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;
 }
}