多线程(停止线程)

如何使线程停止:
代码1:
/**
 * stop 方法已过时;
 * 
 * 如何停止线程?
 * 只有一种,run方法结束。
 * 开启多线程运行,运行代码通常是循环结构。
 * 
 * 只要控制住循环,就可以让run方法结束,也就是线程结束。
 * 
 * 特殊情况:
 * 当线程处于冻结状态。
 * 就不会读取到标记,那么线程就不会结束。
 * 
 * 当没有指定的方式让冻结的线程恢复到运行状态时,这是需要对冻结状态进行清除。
 * 强制让线程恢复到运行状态来。这样就可以操作标记让线程结束。
 * 
 * Thread类提供该方法 interrupt();
 * */
class StopThread implements Runnable
{
	private volatile boolean flag = true;
	public synchronized void run() {
		while(flag)
		{
			try {
				wait();
			} catch (InterruptedException e) {
				System.out.println(Thread.currentThread().getName()+".....Exception");
				this.flag=false;
			}
			System.out.println(Thread.currentThread().getName()+"......run");
		}
	}
	public synchronized void changeFlag() {
		this.flag=false;
	}
}
/**
 * 测试
 * */
class Test
{
	public static void main(String[] args) {
		StopThread st = new StopThread();
		Thread t1 = new Thread(st);
		Thread t2 = new Thread(st);
		
		t1.start();
		t2.start();
		
		int num = 0;
		while (true) {
			if (num++==60) {
				/*
				 这样控制使线程停止 或 在 InterruptedException 异常处理,设置标志使线程停止
				 */
				//st.changeFlag(); 
				t1.interrupt();
				t2.interrupt();
				break;
			}
			System.out.println(Thread.currentThread().getName()+"........"+num);
		}
		System.out.println("over");
	}
}


运行结果:
线程结束成功!

猜你喜欢

转载自gaojunwei.iteye.com/blog/2196945