Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> 以Android環境為例的多線程學習筆記(一)------- 線程的創建

以Android環境為例的多線程學習筆記(一)------- 線程的創建

編輯:關於Android編程

多進程和多線程的本質區別在於其實每一個進程都擁有自己的一整套變量,說白了,可以擁有各種資源,而線程則是共享數據的,

同時也正是因為共享數據從而使得在線程之間的通信要比在進程之間的更有效、更容易。由與我近段時間在學些Android所以本部分的代碼

都以Android開發環境為基礎,但其實這本質也就是JAVA中的多線程,兩者是沒有太大區別的:

首先Thread類就是線程類,可以用它來創建一個新的線程,創建一個簡單的線程的方法大致有兩類:

方法一:

步驟一:建立一個繼承了Runnable接口(這個接口非常簡單,只有一個void run();方法)的類且實現該接口中的run()方法。

步驟二:將要在線程中完成的任務代碼移到該run方法中。

步驟三:創建一個該類的對象。

步驟四:利用剛才創建的對象去創建一個Thread對象。

步驟五:即可調用剛才的Thread對象的start()來啟動一個線程

For example:

//步驟一、步驟二

public class MyThread extends Thread
{
MyHandler handler = null;
public MyThread(MyHandler handler1)
{
handler = handler1;
}
public void run()
{
int i;
for(i = 0;i<10;i++)
{
}
aa = i;
Message message = new Message();
message.what = YYC;//子線程運行完後向UI線程通信

//想UI線程發送消息

handler.sendMessage(message);
}
}


MyHandler handler = new MyHandler();//Android中用於在線程之間通信的機制

//步驟三

TestRunable tr = new TestRunable(handler);

//步驟四
Thread thread = new Thread(tr);

//步驟五
thread.start();//開啟一個新線程

/*

*Android的UI線程中處理消息的機制

*/

private class MyHandler extends Handler{

public void handleMessage(Message mes)
{
switch(mes.what)
{
case YYC:
Log.d("YYYYYYYYY", "YYC");
Toast.makeText(getApplicationContext(), ""+aa,
Toast.LENGTH_SHORT).show();
break;
}

}

};


方法二:

也可以通過直接創建一個繼承了Thread類的子類,並在其run()方法中實現任務代碼,之後直接調用該類對象的start()方法即可啟動該線程。

For example:

public class MyThread extends Thread
{
MyHandler handler = null;
public MyThread(MyHandler handler1)
{
handler = handler1;
}
public void run()
{
int i;
for(i = 0;i<10;i++)
{
}
aa = i;
Message message = new Message();
message.what = YYC;//子線程運行完後向UI線程通信
handler.sendMessage(message);
}
}

MyHandler handler = new MyHandler();

MyThread thread2 = new MyThread(handler);
thread2.start();//開啟一個新線程


注意在此處有一個和容易混淆的誤區就是不要直接調用Thread或Runnable類對象的run()方法,此時只是會執行同一個線程中的任務,而不會啟動一個新的線程。


  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved