當前位置:首頁 » 安卓系統 » android線程終止

android線程終止

發布時間: 2022-09-22 15:43:33

1. Android如何停止線程的方式

一種是調用它裡面的stop()方法,另一種就是你自己設置一個停止線程的標記
(推薦這種)
如果使用Thread.stop方法停止線程,不能保證這個線程是否完整的運行完成一次
run方法;但是如果使用停止的標記位,那麼可以保正在真正停止之前完整的運行完
成一次run方法;第二中方式,但是對於麻煩的動作,解決方式是這一個全局變數,每個復雜的動作都進行判斷一下

2. android如何終止遞歸的子線程

在您子線程的run函數中:

java">publicvoidrun(){
while(!isInterrupted()){//判斷線程是否被要求中斷過,中斷,就線程循環結束.
//想讓線程做什麼..

}
}

在主線程調用finish()前:

if(mMyThread!=null&&mMyThread.isAlive()){//線程活著?中斷它..
mMyThread..interrupt();
}

註:mMyThread是線程對象的引用...

3. android需要考慮結束線程嗎

  • Android終止線程的方法前提

    線程對象屬於一次性消耗品,一般線程執行完run方法之後,線程就正常結束了,線程結束之後就報廢了,不能再次start,只能新建一個線程對象。但有時run方法是永遠不會結束的。

  • 三種方法可以結束線程:

  1. 使用退出標志,使線程正常退出,也就是當run方法完成後線程終止。

  2. 使用interrupt()方法中斷線程。

  3. 使用stop方法強行終止線程(不推薦使用,可能發生不可預料的結果)。

  • 使用退出標志終止線程

    使用一個變數來控制循環,例如最直接的方法就是設一個boolean類型的標志,並通過設置這個標志為true或false來控制while循環是否退出。代碼如下:

  • 使用stop方法終止線程

    程序中可以直接使用thread.stop()來強行終止線程,但是stop方法是很危險的,就象突然關閉計算機電源,而不是按正常程序關機一樣,可能會產生不可預料的結果,不安全主要是:thread.stop()調用之後,創建子線程的線程就會拋出ThreadDeatherror的錯誤,並且會釋放子線程所持有的所有鎖。

其他注意事項:

前兩種方法都可以實現線程的正常退出,也就是要談的優雅結束線程,第3種方法相當於電腦斷電關機一樣,是不安全的方法。

4. 如何終止 android線程池中的任務

  • 終止android線程池中的任務的方法

    1.實現Callable介面

    2.調用pool.submit()方法,返回futrue對象

    3.用future對象來獲取線程的狀態。



  • voidtest(){
    ExecutorServicepool=Executors.newFixedThreadPool(2);


    Callable<String>s=newCallable<String>(){

    @Override
    publicStringcall()throwsException{
    System.out.println("test");
    return"true";
    }
    };

    Future<String>f=pool.submit(s);

    System.out.println(f.isCancelled());
    System.out.println(f.isDone());
    f.cancel(true);


    }


5. android 強行關閉線程

這個好辦,這里有兩個線程吧,線程A
線程mSender。
設:讓線程A,監視線程mSender
第一步:
在A中定義一個變數:ExecutorService
transThread
=
Executors.newSingleThreadExecutor();
解釋:transThread
官方名稱是「單一線程池變數」,他是做什麼的呢,它就像我們給A的一塊賽車場,用來玩遙控賽車。
第二步:
在A中再定義一個變數:
Future
transPending;
解釋:transPending就像我給A一個用來控制遙控賽車的遙控器一樣
第三步:
在A中定義個線程mSender對象:
private
final
Runnable
mSender
=
new
Runnable()
{
public
void
run()
{
}};
解釋:這是你寫的對象,他就相當於我給A的一個遙控賽車。
第四步:
在A中添加如下語句:transPending
=
transThread.submit(mSender);
解釋:這一步就相當於把賽車(mSender)放入場地(第一步中我們定義的transThread),並且用遙控器「transPending」來控制他。
(註:這里你是否會有疑惑,我沒有寫"mSender.start()"之類的語句怎麼讓我的賽車跑起來啊(運行run()方法),放心,有了「transPending
=
transThread.submit(mSender);」這一步,賽車是自動跑起來的,也就是mSender會自動調用run的。)
第五步:
現在你可以用遙控器「transPending」干很多事情了
transPending.cancel(true);無論線程現在是否運行中,立刻終止。
transPending.cancel(false);當前線程若沒有運行(比如掛起狀態)就終止它。
transPending所做的不止這些。

6. android中的線程該怎麼停掉

線程不要直接停止,那樣會產生線程不安全的。
你要配合Handler來用。
當下載完之後調用handler.sendEmptyMessage()方法。

或者你換成AsyncTask來實現線程下載。

7. Android如何停止線程的方式

一種是調用它裡面的stop()方法,另一種就是你自己設置一個停止線程的標記 (推薦這種)

如果使用Thread.stop方法停止線程,不能保證這個線程是否完整的運行完成一次
run方法;但是如果使用停止的標記位,那麼可以保正在真正停止之前完整的運行完
成一次run方法;第二中方式,但是對於麻煩的動作,解決方式是這一個全局變數,每個復雜的動作都進行判斷一下

8. android怎麼停止子線程

一種是調用它裡面的stop()方法,另一種就是你自己設置一個停止線程的標記 (推薦這種)

如果使用Thread.stop方法停止線程,不能保證這個線程是否完整的運行完成一次
run方法;但是如果使用停止的標記位,那麼可以保正在真正停止之前完整的運行完
成一次run方法;第二中方式,但是對於麻煩的動作,解決方式是這一個全局變數,每個復雜的動作都進行判斷一下

9. Android怎麼結束一個線程

在Java語言中,安全結束線程的方法就是「讓線程的自身流程執行完」。
出現「僵屍線程」的原因:1.線程在死循環中執行。2.線程阻塞。

很明顯,你的ReadHandlerThread線程發生了線程阻塞。

dis.readFully(b),你在這里調用了一個阻塞方法,由於socket的另一端一直沒有發送數據,ReadHandlerThread線程一直阻塞在了這里,等待接收完136位元組的數據。136位元組沒有接收完,readFully方法將一直處於阻塞狀態。

解決方法,設置socket的等待超時值,而不是無限等待。

10. android如何終止一個正在運行的子線程

線程像這樣:
Thread{
boolean flag = fase;
run(){
while(!flag){
}
}
}
Thread t = new Thread();
t.start();
-----------------------------------------------------
要終止循環,只需要這樣
t.flag=true;
================================================
還有一種方式 線程像這樣:
Thread{
run(){
while(true){
Thread.sleep(xxxx);
}
}
}
Thread t = new Thread();
t.start();
--------------------------------------------
要終止循環,只需要這樣
t.interrupte();
但是這里要注意調用的時機,要在子線程執行了run方法裡面的sleep(xxxx)後xxxx時間之內調用。也就是子線程會睡一會,醒一會,睡一會,醒一會,要在子線程睡著的時候調用。

熱點內容
c語言求逆 發布:2025-01-13 13:14:43 瀏覽:929
中控大屏怎麼看配置 發布:2025-01-13 13:11:33 瀏覽:912
linux多行刪除 發布:2025-01-13 13:06:01 瀏覽:200
傳奇3離線腳本 發布:2025-01-13 13:05:08 瀏覽:751
java請求https 發布:2025-01-13 12:53:35 瀏覽:868
SQL限定符 發布:2025-01-13 12:46:19 瀏覽:145
掛號系統php源碼 發布:2025-01-13 12:39:04 瀏覽:581
存儲器通史是什麼 發布:2025-01-13 12:38:11 瀏覽:405
可以捏的解壓器怎麼做 發布:2025-01-13 12:32:16 瀏覽:524
ios的java編譯器 發布:2025-01-13 12:12:54 瀏覽:616