課程名稱:程式設計II(472205)
指導老師:蔡佳麟
學生:吳丞婷
學號: 40207045
組別:7
週次:第10-14週 [回首頁]
Part I指定作業:
作業題目 |
3.JAVA參數傳遞有幾種方式?試舉例說明其差異? |
4.何謂執行緒(Thread)?試舉例說明兩個Java執行緒常用的方法。 |
回答內容 |
根據參考來源1:「 Java的參數傳遞總結:JAVA的參數傳遞總是傳"值", 但是傳值方式也分為兩種方式,它們是靠傳遞參數的類型區分的。 這兩種類型分別為JAVA的基礎類型和Object(對象)類型; 基礎類型包括boolean,byte,short,char,int,long,float,double,而Object就是對象 , 如數組.在參數為基礎類型時,見代碼: public class A{ public static void main(String arg[]){ int a=3; method1(a); System.out.println(a); } public static void method1(int a){ a= 4; } } 此時結果的輸出將是1, 而且只要你的值在Main函數中沒變, a的值不管怎麼傳都不回變,這是因為a是傳值, 而這個"值"是a的一個拷貝, a的值在傳遞後的改變只是改變了a的拷貝的內容, 並沒有改變真正的a的值; 對於參數為對象 public class A{ public class A { public static void main(String arg []) { public static void main(String arg[]) { int[] a=new int[1]; int[] a=new int[1]; a[0]=3; a[0]=3 ; method1(a); method1(a); System.out.println(a[0]); System.out.println(a[0]); } } public static void method1(int[] a){ public static void method1(int[] a){ a[0]--; a=new int[0]; } a[0]=4; } } } 左邊的結果將是2, 右邊的結果將是3(未變), 原因是:在傳遞的參數為對象時, 這個傳遞的"值"中放的內容實際上是對向所在的地址, 左邊的情況是指針定位到對象的地址後,在上面把內容給改了, 所以數組的值後會改變,而右邊的情況為給對像新分配了一個指針到新的地址上面去 , 所以所有的操作都在新的地址上面,並不會影響原來的值。 注:對於String,Interger,Boolean,Double等的系統對象, 它們雖然是Object, 但是任何方式的傳遞參數的值得改變並不會影響原來的值。」 2.試舉例說明其差異? 根據參考來源2:「 數傳遞之比較範例: procuder sub(var A, B, C, D:integer); begin B:=A+A; D:=A+C End; : : x:=1; y:=2; z:=7; sub(X, X, X+Y, Z) ; write(Z)←?? : : (1) call by value:7(若無var) B=2, D=4, Z=7 (NOT CHANGE) (2) call by reference:5 (3) call by result:4 (a) SUB(1 , 1 , 3 , 7) A B C D (b) B=1+1=2 D=1+3=4 」
|
根據參考來源1:「 執行緒(英語:thread)是作業系統能夠進行運算排程的最小單位。它被包含在行程之中,是行程中的實際運作單位。一條執行緒指的是行程中一個單一順序的控制流,一個行程中可以並行多個執行緒,每條執行緒並列執行不同的任務。在Unix System V及SunOS中也被稱為輕量行程(lightweight processes),但輕量行程更多指核心執行緒(kernel thread),而把用戶執行緒(user thread)稱為執行緒。 執行緒是獨立排程和分派的基本單位。執行緒可以作業系統核心排程的核心執行緒,如Win32執行緒;由用戶行程自行排程的用戶執行緒,如Linux平台的POSIX Thread;或者由核心與用戶行程,如Windows 7的執行緒,進行混合排程。 同一行程中的多條執行緒將共享該行程中的全部系統資源,如虛擬位址空間,檔案描述符和訊號處理等等。但同一行程中的多個執行緒有各自的呼叫棧(call stack),自己的暫存器環境(register context),自己的執行緒本地儲存(thread-local storage)。 一個行程可以有很多執行緒,每條執行緒並列執行不同的任務。 在多核或多CPU,或支援Hyper-threading的CPU上使用多執行緒程式設計的好處是顯而易見,即提高了程式的執行吞吐率。在單CPU單核的電腦上,使用多執行緒技術,也可以把行程中負責IO處理、人機互動而常備阻塞的部分與密集計算的部分分開來執行,編寫專門的workhorse執行緒執行密集計算,從而提高了程式的執行效率。」 2.試舉例說明兩個Java執行緒常用的方法 根據參考來源2: 「 1.繼承Thread類別:直接產生執行緒。 2. 實作Runnable介面:間接產生執行緒。」 |
參考來源 |
|
|
Part II 10-14週學習心得彙整:
週別 |
10 |
11 |
12 |
13 |
14 |
截圖 |
|
Ex11.3 執行緒
|
|
|
|
課後心得 |
|
|
|
|
|