android線程執行順序執行
❶ 如何實現線程順序 android
函數執行到 Thread d=new Daemon(); 這一句,不是等這一句執行完了再繼續執行下一句的,因為d 是一個線程,是並行的執行,有時間片就執行,沒有就暫停執行,你把mian函數改成下面的運行一下,看看結果就知道了,我是寫web程序的,不怎麼用線程,所以只是按照自己的理解說的,錯了請指點... ps:(我剛注冊的,怎麼就有人找到我,網路自動匹配?) public static void main(String[] args) throws Exception { Thread d = new Daemon(); for (int i = 0; i < 100; i++) { System.out.println("=====:"+i); } Thread.sleep(1); }
❷ android怎麼提高線程的優先順序
線程調度 計算機通常只有一個CPU,在任意時刻只能執行一條機器指令,每個線程只有獲得CPU的使用權才能執行指令.所謂多線程的並發運行,其實是指從宏觀上看,各個線程輪流獲得CPU的使用權,分別執行各自的任務.在運行池中,會有多個處於就緒狀態的線程在等待CPU,java虛擬機的一項任務就是負責線程的調度,線程調度是指按照特定機制為多個線程分配CPU的使用權. 有兩種調度模型:分時調度模型和搶占式調度模型。 分時調度模型是指讓所有的線程輪流獲得cpu的使用權,並且平均分配每個線程佔用的CPU的時間片這個也比較好理解。 java虛擬機採用搶占式調度模型,是指優先讓可運行池中優先順序高的線程佔用CPU,如果可運行池中的線程優先順序相同,那麼就隨機選擇一個線程,使其佔用CPU。處於運行狀態的線程會一直運行,直至它不得不放棄CPU。 一個線程會因為以下原因而放棄CPU。 1 java虛擬機讓當前線程暫時放棄CPU,轉到就緒狀態,使其它線程或者運行機會。 2 當前線程因為某些原因而進入阻塞狀態 3 線程結束運行 需要注意的是,線程的調度不是跨平台的,它 不僅僅取決於java虛擬機,還依賴於操作系統。在某些操作系統中,只要運行中的線程沒有遇到阻塞,就不會放棄CPU;在某些操作系統中,即使線程沒有遇到阻塞,也會運行一段時間後放棄CPU,給其它線程運行的機會。 java的線程調度是不分時的,同時啟動多個線程後,不能保證各個線程輪流獲得均等的CPU時間片。 如果希望明確地讓一個線程給另外一個線程運行的機會,可以採取以下辦法之一。 調整各個線程的優先順序 讓處於運行狀態的線程調用Thread.sleep()方法 讓處於運行狀態的線程調用Thread.yield()方法 讓處於運行狀態的線程調用另一個線程的join()方法
❸ Android這段代碼執行順序我不十分清楚,請幫我分析下,先執行哪句,再執行哪句不要泛泛的講線程
1,執行onCreate方法,
2,啟動線程 執行線程里的run()方法。
3,執行到handler.sendMessage(msg);就跳到private Handler handler = new Handler()里,
4,執行public void handleMessage(Message msg),根據傳過來的msg的值,來顯示圖片
不用匿名內部類的話,就很簡單了。單獨在外面寫兩個類,一個繼承Thread,並重載run方法,一個繼承Handler,重載handlemessage方法。方法內容就跟你上面一樣,
然後在Activity的onCreate方法里,定義自己的線程MyThread mThread,實例化後調用start。同理定義自己的Handle 調用方法Myhandler.handlemessage().就ok餓,我只能把思路給你,挺簡單的,就是新寫兩個類嘛。全部寫出來我沒那個功夫
❹ Android3.0以後,Asynctask在沒開線程池的情況下會怎麼排隊執行
當然不是了,是一個task裡面的所有任務都是順序執行的,多個task之間沒有同步關系的。
❺ android定義一個方法在方法中開啟一個線程執行耗時操作發送消息,如何在確保重復調用該方法
Executors.newSingleThreadExecutor()
單線程線程池,是順序執行的。
❻ android 線程是同時運行還是有先後次序
如果有兩個線程的話,開啟的順序是你主線程中的子線程的start先後順序,一旦都開啟,那就是同時運行在主線程中了,不分先後。
❼ android 線程池 怎麼用
我覺得使用線程池最大的優點是我們可以對我們開啟的線程進行跟進,當我們不需要處理的時候可以將它shutdow掉,同時當我們定義了一個線程池之後,可以復用線程而不需要開啟更多線程,這點對於我們手機開發是至關重要的,你開啟的thread越多意味著你的app內存消耗越多,速度也就越來越慢,提高現有線程的復用是一個很棒的選擇
線程池中處理線程的類別較多如:
限制按順序來執行任務的線程池、一個一個任務的執行線程池、按指定個數來執行任務的線程池、創建一個可在指定時間里執行任務的線程池,亦可重復執行、按指定工廠模式來執行的線程池
❽ android handler demo中代碼執行順序有些疑問,代碼可以運行
no1,no4就不說了,當點擊按鈕執行:updateBarHandler.post(updateThread);時,實際上就是開始執行Runnable的run方法,睡眠500毫秒後,調用updateBarHandler.sendMessage(msg);方法,這時updateBarHandler會調用你重寫的handleMessage(int msg)方法,至於no5,代碼寫的很清楚了,當i>=100時,才會執行System.out.println("No.5");另android調試一般都是用log列印信息
❾ android的dialog方法執行順序很奇怪,求教!
這種方法可以實現你想要的效果,先dismiss掉dialog,5s後顯示Toast。
這種情況最好是另開線程去計時5s,然後通知主線程去顯示Toast。
在oncreate中加入
mHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
switch(msg.what){
case 0:
Toast.makeText(getApplicationContext(), "sleep 5000.", Toast.LENGTH_LONG).show();
break;
}
}
};
protected Dialog onCreateDialog(final int id) {
switch (id) {
case 1:
return new AlertDialog.Builder(this).setTitle("test").setPositiveButton("click", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
dismissDialog(1);
// 此處為計時5s
Timer timer = new Timer();
TimerTask task = new TimerTask() {
@Override
public void run() {
// 5s後發送消息更新UI主線程
mHandler.sendEmptyMessage(0);
}
};
timer.schele(task, 1000 * 5);
}
}).setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
}).show();
}
return super.onCreateDialog(id);
}
或者是把dismissDialog(1);後的寫成
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(5000);
mHandler.sendEmptyMessage(0);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).start();
❿ android指令的執行順序
請問下你保存數據是放到哪裡?伺服器還是本地。
處理照片返回的時候在onactivityresult里操作 啟動另外一個activity
直接Intent丟過需要保存的數據到另外一個activity里去。
在不行就調試看數據了。是不是有誤