`

java Thread 停止 开始 暂停

阅读更多

1,写了一个小程序:

public class TestThread {

	public static void main(String[] args) {
		Thread1 t = new Thread1();
		Thread c = new Control(t);
		t.setSleep(true);
		c.setDaemon(true);
		
		t.start();
		c.start();
		System.out.println("You can input 'g' and 'Enter' to start your job.");
		System.out.println("You can input 'w' and 'Enter' to let your job to wait...");
		System.out.println("You can input 's' and 'Enter' to finish your job.");
	}
}
class Thread1 extends Thread {
	private boolean isSleep = true;
	private boolean isStop = false;
	
	public void run() {
		while(!isStop) {
			if(isSleep) {
				try {
					Thread.sleep(1);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			} else {
				System.out.println("Thread: "+Thread.currentThread().getName() + " do someting.");
				try {
					Thread.sleep(2000);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
		}
		System.out.println("Thread: "+Thread.currentThread().getName() + " finished.");
	}
	
	public void setSleep(boolean sleep) {
		this.isSleep = sleep;
	}
	public void setStop(boolean stop) {
		this.isStop = stop;
	}
}
class Control extends Thread {
	private Thread1 t;
	public Control(Thread1 t) {
		this.t = t;
	}
	
	public void run() {
		while(true) {
			int r=0;
			try {
				r=System.in.read();
			} catch (IOException e) {
				e.printStackTrace();
			}
			if(r == 'g') {
				t.setSleep(false);
			} else if(r == 'w') {
				t.setSleep(true);
			} else if(r == 's') {
				t.setStop(true);
			}
		}
	}
}

 

程序说明:
1,刚开始程序的等待的。
2,你输入‘g’回车后会运行。
3,你输入‘w’回车后会再次等待。
4,再次输入‘g’回车后又会运行。
5,输入‘s'回车,会终止程序。

6,这里将控制线程设置成了Deamon的形式,因为线程t由线程c控制可以终止,而线程c始终无法终止,所以把它设置为后台线程,当让控制的线程t退出时,所有的前台线程都结束了,这样线程c就可以自动退出。

分享到:
评论
1 楼 进退取舍 2012-08-08  
感谢楼分享,清淅明了。对我很有用!

相关推荐

    Java中停止线程执行的方法

    一、暂停或停止线程的理论 在Java编程中,要暂停或停止当前正在运行的线程,有几种方法。对于把线程转入睡眠Sleep状态,使用Thread.sleep()是最正确的方式。或许有人会问,为什么不使用等待wait()或通知notify()?要...

    后端JAVA虚拟机JVM调优必备工具

    IBM Thread and Monitor Dump Analyzer for Java专业JVM调优工具 一、使用方法 1.使用java -jar启动程序 2.找到需要分析的jvm进程 3.使用jstack [pid] > /tmp/sdapjvmlog.txt导出进程的详细日志 4.使用程序打开...

    zhaoguolei1024#AutoJsExample#多线程.js1

    # 多线程.js//线程暂停//线程停止//定义一个线程//线程开始执行//等待线程执行完闭。

    java笔试题大集合及答案(另附各大公司笔试题)

    答:sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。 wait是Object类的方法,对此对象调用wait方法导致本...

    JAVA面试题最全集

    调用Thread类的destroy()方法有什么后果? 58.多线程,用什么关键字修饰同步方法?stop()和suspend()方法为何不推荐使用? 59.使用socket建立客户端与服务器的通信的过程 60.JAVA语言国际化应用,Locale类,...

    java 面试题 总结

    sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。 wait是Object类的方法,对此对象调用wait方法导致本线程...

    java考试程序(java创新版)

    本程序采用的技术用I/O操作,以及比较难控制的多线程,文件选择程序,对于刚学GUI的同学有帮助,特别对于学多线程的同学帮助尤其大,因为这里涉及了如何有效地控制多线程,使其暂停,开始,停止

    Java开发技术大全 电子版

    8.4.3暂停、恢复和停止线程282 8.4.4生产者-消费者问题实例284 8.5本章小结287 第9章运行时类型识别288 9.1RTTI的作用288 9.2用Class类来加载对象289 9.3使用getClass()方法获取类信息290 9.4使用类标记292 ...

    超级有影响力霸气的Java面试题大全文档

    sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。 wait是Object类的方法,对此对象调用wait方法导致本线程...

    Python中Threading用法详解

    但现在线程没有优先级,没有线程组,不能被销毁、停止、暂停、开始和打断。 Java Thread类的静态方法,被移植成了模块方法。 main thread: 运行python程序的线程 daemon thread 守护线程,如果守护线程之外的线程都...

    Java抢火车票程序源码-multithread:多线程

    如何使线程暂停 如何使线程停止 线程的优先级 线程安全相关问题 什么是线程 “电脑卡死了,清理一下”大家通常性的做法,这里清理的都是指运行在系统中的进程,如开发的打开浏览器,每新打开一个窗口都是一个新的...

    javascript中巧用“闭包”实现程序的暂停执行功能

    Author:月影 Form:http://bbs.51js.com/thread-66361-1-1.html <input type=”button” value=”继续” onclick=’st();’/> [removed] /*基本原理*/ var st = (function(){ alert(1); alert&...

    kopr-file-thread-server

    暂停 - 暂停下载 - 程序可以关闭(即使程序无中断关闭,当前状态也会保存) 停止 - 结束下载,删除文件并关闭 (c) 2015 年帕特里克·佩卡尔奇克 任务 创建一个客户端-服务器应用程序来复制文件。 所需功能: 该...

    j2se项目源码及介绍_飞鸽传书

    飞鸽传书 一、 背景描述 学习完网络(UDP)后,可以练习部署该项目。 二、 实现要求 模仿飞鸽传书完成飞鸽传书的大部分功能(主要是发送组播...e) 传送过程中的暂停、停止、继续功能的实现? 参考线程。 六、 附加说明

    net学习笔记及其他代码应用

    run()方法可以产生必须退出的标志来停止一个线程。 40.接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)? 答:接口可以继承接口。抽象类可以实现(implements)接口...

Global site tag (gtag.js) - Google Analytics