Thread Already Started報錯解決方案

網上說Thread不需要stop()的原因是因爲運行到尾部就會自動釋放,而代碼:

01 Thread myThread = new Thread(new Runnable() {
02  
03     @Override
04     public void run() {
05         // TODO Auto-generated method stub
06         Log.i("thread""" + count);
07         while (runable) {
08              
09                 count++;
10                 try {
11                     Thread.sleep(100);
12                 catch (Exception e) {
13                 }
14                 Message msg = mhandler.obtainMessage(FLAG_UPDATE, 00);
15                 mhandler.sendMessage(msg);
16             }
17          
18     }
19 });

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

這是個很悲催的事情,而我現在也只能,這樣:

01 Thread myThread = new Thread(new Runnable() {
02  
03     @Override
04     public void run() {
05         // TODO Auto-generated method stub
06         Log.i("thread""" + count);
07         while (true) {
08             if (runable) {
09                 count++;
10                 try {
11                     Thread.sleep(100);
12                 catch (Exception e) {
13                 }
14                 Message msg = mhandler.obtainMessage(FLAG_UPDATE, 00);
15                 mhandler.sendMessage(msg);
16             }
17         }
18     }
19 });

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

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

 

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


新代碼如下:

創建一個Runnable,用於Thread執行

1 Runnable sendable = new Runnable() {
2  
3     @Override
4     public void run() {
5         // TODO Auto-generated method stub
6  
7     }
8 };
run方法中寫上需要操作的邏輯,然後這樣調用:

1 new Thread(sendable).start();
這樣,每次需要調用的時候會重新new一個Thread,大體是這樣,但可以無限次數運行。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章