JAVA多线程

多线程顾名思义就是有多个线程(Thread)同时并发运行,与进程(Process)不同,进程之间的资源互相独立而同一个进程的各个线程之间共享资源。

总之多线程思想是编程领域的一次飞跃,掌握好多线程可以在很多方面如鱼得水。

下面是一段用多线程模拟定制炸弹逻辑的java代码,注意代码是分两个文件MultiThreadTest.java和TimeBombThread.java的

//MultiThreadTest.java
import java.io.*;
/**
 * 
 * @author Avery Liu
 * 模拟定时炸弹
 */
public class MultiThreadTest {
	public static void main(String[] args) {
		// 创建和启动线程
		TimeBombThread tbt = new TimeBombThread();
		BufferedReader bf = new BufferedReader(
				new InputStreamReader (System.in));
		String line;
		try {
			while (true) {
				System.out.println("请输入quit结束线程:");
				//获得控制台输入
				line = bf.readLine();
				
				//判断停机条件
				if (line.equals("quit")) {
					
					tbt.stopThread();
					break;
				}
			}
		}catch(Exception e) {}
	}

}


//TimeBombThread.java
/**
 * 使用继承Thread类方式模拟定时炸弹逻辑
 */
public class TimeBombThread extends Thread {
	int n;
	boolean isRun;
	public TimeBombThread() {
		n = 60;
		isRun = true;
		this.start ();    		//启动线程
	}
	
	public void run() {
		try {
			while (isRun) {
				Thread.sleep(1000);
				System.out.println("剩余时间" + n);
				if (n <= 0) {
					isRun = false;
					System.out.println("炸弹爆炸!");
					break;
				}
				n--;
			}
		}catch(Exception e) {}
	}
	
	public void stopThread() {
		isRun = false;
        System.out.println("停止计时!");
        }
}


 在实际运行的过程中遇到了一点小问题,就是输入quit后程序不中止运行,原因是我把判断语句写成了if(line == "quit"),后来百度了一下才知道在java中,"=="号表示的是两个对象内容和地址都相同,line 和 "quit"是两个String对象,虽然它们的内容相同,但是它们有不同的地址空间所以用双等号判断得出的结果是false,改用line.equals()方法就能解决问题,因为equals方法只是判断内容相同。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值