關於執行緒設計的感受
前陣子寫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()才算是啟動執行緒)
我好笨啊。看來我離真正的程式設計師還有一段距離
相關文章
- 關於redis單執行緒的分析Redis執行緒
- 多執行緒程式設計相關理論執行緒程式設計
- 保障執行緒安全的設計執行緒
- 多執行緒程式設計基礎(一)-- 執行緒的使用執行緒程式設計
- 關於執行緒池的面試題執行緒面試題
- 關於執行緒的幾個函式執行緒函式
- 併發程式設計之多執行緒執行緒安全程式設計執行緒
- 多執行緒程式設計基礎(二)-- 執行緒池的使用執行緒程式設計
- java基礎 關於執行緒安全Java執行緒
- [短文速讀 -5] 多執行緒程式設計引子:程式、執行緒、執行緒安全執行緒程式設計
- Java 關於執行緒的一些使用Java執行緒
- python關於執行緒的一點介紹Python執行緒
- java 多執行緒(關於Thread的講解)Java執行緒thread
- 關於js執行緒問題的解讀JS執行緒
- 關於《Java併發程式設計之執行緒池十八問》的補充內容Java程式設計執行緒
- 關於Numba的執行緒實現的說明執行緒
- python 多執行緒程式設計Python執行緒程式設計
- JavaScript多執行緒程式設計JavaScript執行緒程式設計
- Python多執行緒程式設計Python執行緒程式設計
- 程式設計規範-父子執行緒必須放在不同的執行緒池中程式設計執行緒
- 關於多執行緒的兩種實現方式執行緒
- 多執行緒的執行緒狀態及相關操作執行緒
- Java併發程式設計之執行緒安全、執行緒通訊Java程式設計執行緒
- C#多執行緒程式設計實戰1.1建立執行緒C#執行緒程式設計
- C#多執行緒程式設計-基元執行緒同步構造C#執行緒程式設計
- Java併發程式設計之執行緒篇之執行緒的由來(一)Java程式設計執行緒
- Java執行緒與併發程式設計實踐----額外的執行緒能力Java執行緒程式設計
- python多執行緒中:如何關閉執行緒?Python執行緒
- javascript執行緒及與執行緒有關的效能優化JavaScript執行緒優化
- 多執行緒程式設計的核心思想執行緒程式設計
- 關於Java併發多執行緒的一點思考Java執行緒
- 有個關於多執行緒的識別問題執行緒
- 關於redis的幾件小事(二)redis執行緒模型Redis執行緒模型
- 關於linux多執行緒fork的理解和學習Linux執行緒
- windows核心程式設計--執行緒池Windows程式設計執行緒
- 多執行緒程式設計ExecutorService用法執行緒程式設計
- 29. 多執行緒程式設計執行緒程式設計
- 併發程式設計之:執行緒程式設計執行緒