Android Thread第二次Thread.start()報錯的疑問

        網上說Thread不須要stop()的緣由是由於運行到尾部就會自動釋放,而代碼: java

Thread myThread = new Thread(new Runnable() {

		@Override
		public void run() {
			// TODO Auto-generated method stub
			Log.i("thread", "" + count);
			while (runable) {
				
					count++;
					try {
						Thread.sleep(100);
					} catch (Exception e) {
					}
					Message msg = mhandler.obtainMessage(FLAG_UPDATE, 0, 0);
					mhandler.sendMessage(msg);
				}
			
		}
	});

在第二次start()的時候,系統拋出異常:java.lang.IllegalThreadStateException: Thread already started. ide

這是個很悲催的事情,而我如今也只能,這樣: 性能

Thread myThread = new Thread(new Runnable() {

		@Override
		public void run() {
			// TODO Auto-generated method stub
			Log.i("thread", "" + count);
			while (true) {
				if (runable) {
					count++;
					try {
						Thread.sleep(100);
					} catch (Exception e) {
					}
					Message msg = mhandler.obtainMessage(FLAG_UPDATE, 0, 0);
					mhandler.sendMessage(msg);
				}
			}
		}
	});

        不過這樣的犧牲就是有線程在無限循環...性能... 線程

        不知列位大牛是怎麼處理這裏的。 code

 

這個已經解決了,能夠寫一個繼承Thread的類,或者寫一個Runnable,而後再new Thread(xx).start();就能夠了,回頭看一下,真小白啊! 繼承


新代碼以下: io

建立一個Runnable,用於Thread執行 class

Runnable sendable = new Runnable() {

		@Override
		public void run() {
			// TODO Auto-generated method stub

		}
	};
run方法中寫上須要操做的邏輯,而後這樣調用:

new Thread(sendable).start();
這樣,每次須要調用的時候會從新new一個Thread,大致是這樣,但能夠無限次數運行。
相關文章
相關標籤/搜索