1. 程式人生 > >java學習之執行緒筆記

java學習之執行緒筆記

學習,享受他的快樂,才不會成為一種苦惱拖累。

隨手寫寫,記錄自己的點滴進步。才會變得更有動力。

今天學習了一下java的執行緒。看到這個名字很隨意,自然的就想到了程序。因為在windows中程序很容易見到。每當某個程式沒有響應後,我們都會很自然的開啟資源管理器,結束任務,結束不了的就要去程序中結束程序。這樣就可以將它關閉了。

而執行緒在我的理解中他是程序的一部分,或者說程序是一名長官,而執行緒是長官手下的兵。戰鬥時要保證長官活著。長官掛了,士兵也應該死光了吧(個人想法)。程序被殺死了,他下面的執行緒也應該over了。當然也存在例外,不介紹,自己都感覺還沒學會,搞不清。

對了,還有執行緒是並不是同時進行的。所謂的同時僅僅是一種感官的錯覺。他們也是排隊滴。至於誰先來,我現在的理解,加感覺是:看人品。。。或許以後理解多了會有不同的看法吧。他們誰人品好,誰搶到了cpu,哪麼他就執行嘍。

java中的執行緒:

java.long.Thread類 和 java.long.Runnable介面

學習嘛,看文件唄。

java.long.Thread類實現了java.long.Runnable介面

java.long.Runnable中只存在一個方法:

public abstract void run();

使用實現介面Runnable的物件建立一個執行緒時,啟動該執行緒將導致在獨立執行的執行緒中呼叫物件的run方法。

在Thread類中 run方法是這麼寫的

如果該執行緒使用了獨立的Runnable 執行物件構造的,則呼叫該Runnable 物件的run方法;否則,該方法不執行任何操作並返回。

Thread的子類應該重寫此方法。

個人沒有很弄明白這東西到底嘛意思。。。。。沒法子看原始碼唄:

Thread中run方法:

public void run(){
if(target !=null){
target.run();
}
}

target是Runnable物件,target the object whose run() method gets called。

嘗試翻譯下,不對的話就當笑話看吧。run()方法呼叫的target物件。

說實話還是沒懂run()方法到底怎麼用。現在需要一個例子。

好吧。在api中我沒找到。。。求助一下google

ok,引用一下別人寫的嘍:

run()方法只是類的一個普通方法,如果直接呼叫run()方法,程式中依然只有主執行緒這一個執行緒,其程式執行路徑還是隻有一條,還是要順序執行,還是要等run()方法體執行完畢後才可執行下面的程式碼,這樣就沒有達到寫執行緒的目的。

把需要並處理的程式碼放在run()方法中,start()方法啟動執行緒將自動呼叫run()方法,這是由jvm的記憶體機制規定的。並且run()方法必須是public訪問許可權,返回值型別為void。

ok問題解決。順帶著將start()方法也解決了下。

寫到這吧。搜段程式碼來練練手。

順帶著還可以看看別人對執行緒的理解。