導航:首頁 > 操作系統 > android線程wait

android線程wait

發布時間:2022-05-13 01:09:06

android 線程間通信有哪幾種方式

共享內存(變數);
第三方框架:EventBus ;
Handler/AsyncTask;
java 里的 wait(),notify(),notifyAll()

⑵ android子線程如何暫停和喚醒

在子線程中加looper,然後在主線程中向子線程中定義的handler發送消息,通知子線程wait()或者notify(),記得run中的代碼塊要放在synchronized中,說了大致的思路。

⑶ Android如何阻塞一個線程讓其等待一個時間發生之後再繼續執行

你所謂的線程阻塞是指的ui線程嗎?這應該是從你在開發的經驗以及測試當中去體驗的,如果你說是用代碼去判斷線程阻塞的話,估計比較復雜,也沒那個必要,android的機制在出現ui線程阻塞的話會出現anr給予用戶提示,出現這樣的情況是開發者在開發過程中就得去避免的!

⑷ android中怎麼讓線程長時間休眠線程休眠最長的安全時間是多少

設定一個Timer對象,時間到後觸發事件再給handler發消息處理就行,處理完重置timer的時間進入下一個循環即可。隨便用wait之類的土辦法的話很容易被系統判定為進程掛死然後被kill掉的。

⑸ Android設計問題

等待過程放進子線程(游標附件代碼),主線程不會阻塞,會立即繼續執行下面的Intent系列語句,然而此時upImage尚未完成,得不到具體的uri,所以會彈出選擇打開方式的這種情況。
可以改成如下方式:
兩個線程可以不變,但第二個線程wait返回後,post 一個消息到一個handler,handler在主線程中,執行Intent那部分的代碼,這樣能保證上傳完成後才執行Action view的intent,不會出現選擇打開方式。

⑹ Android怎麼正確使用wait和notify方法

synchronized(obj) {
while(!condition) {
obj.wait();
}
obj.doSomething();
}
當線程A獲得了obj鎖後,發現條件condition不滿足,無法繼續下一處理,於是線程A就wait() , 放棄對象鎖.
之後在另一線程B中,如果B更改了某些條件,使得線程A的condition條件滿足了,就可以喚醒線程A:
synchronized(obj) {
condition = true;
obj.notify();
}
需要注意的概念是:
# 調用obj的wait(), notify()方法前,必須獲得obj鎖,也就是必須寫在synchronized(obj) {…} 代碼段內。
# 調用obj.wait()後,線程A就釋放了obj的鎖,否則線程B無法獲得obj鎖,也就無法在synchronized(obj) {…} 代碼段內喚醒A。
# 當obj.wait()方法返回後,線程A需要再次獲得obj鎖,才能繼續執行。
# 如果A1,A2,A3都在obj.wait(),則B調用obj.notify()只能喚醒A1,A2,A3中的一個(具體哪一個由JVM決定)。
# obj.notifyAll()則能全部喚醒A1,A2,A3,但是要繼續執行obj.wait()的下一條語句,必須獲得obj鎖,因此,A1,A2,A3隻有一個有機會獲得鎖繼續執行,例如A1,其餘的需要等待A1釋放obj鎖之後才能繼續執行。
# 當B調用obj.notify/notifyAll的時候,B正持有obj鎖,因此,A1,A2,A3雖被喚醒,但是仍無法獲得obj鎖。直到B退出synchronized塊,釋放obj鎖後,A1,A2,A3中的一個才有機會獲得鎖繼續執行

⑺ android需要考慮結束線程嗎

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

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

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

其他注意事項:

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

⑻ 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所做的不止這些。

⑼ android中新聲明了一個線程,如何對這個線程進行開始,暫停,再開始呢

class RunnableDemo implements Runnable {
public Thread t;
private String threadName;
boolean suspended = false;

RunnableDemo( String name){
threadName = name;
System.out.println("Creating " + threadName );
}
public void run() {
System.out.println("Running " + threadName );
try {
for(int i = 10; i > 0; i--) {
System.out.println("Thread: " + threadName + ", " + i);
// Let the thread sleep for a while.
Thread.sleep(300);
synchronized(this) {
while(suspended) {
wait();
}
}
}
} catch (InterruptedException e) {
System.out.println("Thread " + threadName + " interrupted.");
}
System.out.println("Thread " + threadName + " exiting.");
}

public void start ()
{
System.out.println("Starting " + threadName );
if (t == null)
{
t = new Thread (this, threadName);
t.start ();
}
}
void suspend() {
suspended = true;
}
synchronized void resume() {
suspended = false;
notify();
}
}

start為開始,suspend為暫停,resume為恢復。

⑽ android java 線程 wait()函數

簡單說wait必須顯示用代碼喚醒。
wait是Object的方法,也就是說可以對任意一個對象調用wait方法,調用wait方法將會將調用者的線程掛起,直到其他線程調用同一個對象的notify方法才會重新激活調用者,例如:
//Thread 1
try{
obj.wait();//suspend thread until obj.notify() is called
}
catch(InterrputedException e) {
}

閱讀全文

與android線程wait相關的資料

熱點內容
安卓手機最好用什麼軟體 瀏覽:352
編譯原理lr分析講解 瀏覽:143
單純程序員哭了 瀏覽:336
男生設計app哪個好 瀏覽:765
梯形圖是編譯還是解釋執行 瀏覽:473
錄屏好用的app哪個好用 瀏覽:637
一念逍遙新伺服器怎麼看 瀏覽:92
移動app的信用充話費在哪裡 瀏覽:502
單片機接感測器 瀏覽:74
免費pdf工具 瀏覽:382
pdf加密一機一碼 瀏覽:602
怎麼把百度雲資源壓縮 瀏覽:458
不會數學英語如何編程 瀏覽:88
如何能知道網站伺服器地址 瀏覽:648
程序員月薪5萬難嗎 瀏覽:138
如何評價程序員 瀏覽:803
雲虛機和伺服器的區別 瀏覽:403
廣西柳州壓縮機廠 瀏覽:639
arm開發編譯器 瀏覽:833
51單片機的核心 瀏覽:746