關於執行緒設計的感受
前陣子寫WapExplorer時,設計網路那一部分我採用的是執行緒程式設計,採用執行緒設計也有段時間了,但卻總是Copy-plaster,所以一直對它的機制不是很瞭解,直到那天碰到一個很白痴的問題(明明我啟動一個執行緒去下載網路資料)為什麼程式還提示你要採用執行緒去操作,這樣才不會阻塞。具體看下程式碼
程式碼有詳細解釋
經過上面的經驗後,發覺,啟動一個執行緒,執行緒真正工作的地方是run。
在程式初始話方法(構造方法,還是在主程式裡執行,要呼叫start()才算是啟動執行緒)
我好笨啊。看來我離真正的程式設計師還有一段距離
程式碼有詳細解釋
java 程式碼
- public class WapDownload extends Thread{
- private static Logger logger = Logger.getLogger("WapDownload");
- WmlParser wp;
- String url;
- WapDownload(String url,MainForm mainForm) throws XmlPullParserException, IOException{
- logger.debug("啟動一個下載執行緒");
- this.url = url;
- wp = WmlParser.getWmlParser();
- wp.setMainForm(mainForm);
- //這段程式碼不能放在這裡,因為
- ///setInput();
- start();
- }
- public void run() {
- setInput();
- try {
- wp.parser();
- } catch (XmlPullParserException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- //開啟網路資源,其實WmlPaser通過setInput方法進行資料下載,這段程式碼不能放到初始話裡
- //應該放在run方法。這樣才能保證真正的執行緒去讀取資料。
- private void setInput() {
- try {
- wp.setInput(HttpProxyHandler.openInputStream(url),"UTF-8");
- } catch (XmlPullParserException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- public static WapDownload openWapDownload(String url, MainForm mainForm) throws XmlPullParserException, IOException{
- return new WapDownload(url, mainForm);
- }
- }
經過上面的經驗後,發覺,啟動一個執行緒,執行緒真正工作的地方是run。
在程式初始話方法(構造方法,還是在主程式裡執行,要呼叫start()才算是啟動執行緒)
我好笨啊。看來我離真正的程式設計師還有一段距離
相關文章
- 關於“UI執行緒”UI執行緒
- 關於執行緒的問題...執行緒
- 關於多執行緒控制執行緒
- 關於多執行緒(轉)執行緒
- 關於redis單執行緒的分析Redis執行緒
- 關於執行緒池的面試題執行緒面試題
- 多執行緒程式設計相關理論執行緒程式設計
- 關於執行緒的幾個函式執行緒函式
- 關於linux的執行緒實現Linux執行緒
- 關於Python多執行緒的理解Python執行緒
- 保障執行緒安全的設計執行緒
- 多執行緒程式設計基礎(一)-- 執行緒的使用執行緒程式設計
- 併發程式設計之多執行緒執行緒安全程式設計執行緒
- 多執行緒程式設計,處理多執行緒的併發問題(執行緒池)執行緒程式設計
- 多執行緒程式設計基礎(二)-- 執行緒池的使用執行緒程式設計
- C#多執行緒程式設計(1):執行緒的啟動C#執行緒程式設計
- java基礎 關於執行緒安全Java執行緒
- 多執行緒程式設計執行緒程式設計
- 執行緒程式設計(一)執行緒程式設計
- 使用執行緒池優化多執行緒程式設計執行緒優化程式設計
- iOS多執行緒程式設計:執行緒同步總結iOS執行緒程式設計
- .NET多執行緒程式設計(3):執行緒同步 (轉)執行緒程式設計
- java執行緒程式設計(一):執行緒基礎(轉)Java執行緒程式設計
- POSIX執行緒程式設計起步(2)-執行緒同步 (轉)執行緒程式設計
- Posix執行緒程式設計指南(3)-執行緒同步 (轉)執行緒程式設計
- 關於js執行緒問題的解讀JS執行緒
- Java 關於執行緒的一些使用Java執行緒
- 關於多執行緒協作的疑問執行緒
- 跪求關於〖執行緒遷移〗的相關資料!執行緒
- 執行緒池的設計問題執行緒
- [短文速讀 -5] 多執行緒程式設計引子:程式、執行緒、執行緒安全執行緒程式設計
- 關於Numba的執行緒實現的說明執行緒
- 關於《Java併發程式設計之執行緒池十八問》的補充內容Java程式設計執行緒
- 基於執行緒與基於事件的併發程式設計之爭執行緒事件程式設計
- Posix執行緒程式設計指南(4)-執行緒終止 (轉)執行緒程式設計
- .NET多執行緒程式設計(4):執行緒池和非同步程式設計 (轉)執行緒程式設計非同步
- 關於 Python 多執行緒/多程式Python執行緒
- 小小問題―關於java多執行緒Java執行緒