如何正確停止一個線程

    首先肯定是不能用Thread的stop()方法的,因爲此方法是非常不安全的,而且已經被廢棄了,那麼在這裏就給出一種官方的推薦方案。    private static Thread mThread;

	private static Thread mThread;
	static StringMain.MyRunnable mRunnable = new StringMain().new MyRunnable();

	public static void main(String[] args) {
		System.out.println("A");
		mThread = new Thread(mRunnable);
		mThread.start();
		// 2秒後停止線程
		try {
			Thread.sleep(2000);
			//手動停止
			mRunnable.destory();
			mThread.join();
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}

	public class MyRunnable implements Runnable {
		public void destory() {
			mThread = null;
		}
		@Override
		public void run() {
			Thread thread = Thread.currentThread();
			//當mThread被賦值爲空時就會終止執行了,run方法結束,線程停止
			while (mThread == thread) {
				System.out.println("繼續···");
			}
		}

	}
    主要辦法就是在run方法中進行while判斷,當要退出時就跳出循環即可。調用join方法主要是爲了讓線程終止後去執行其後的代碼,也可不用調用。
    關於Thread的stop()爲何被拋棄以及不安全請見官網解釋:http://docs.oracle.com/javase/1.5.0/docs/guide/misc/threadPrimitiveDeprecation.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章