下面是執行的**部分:
package testthree.day06.test05;
/** * @author mr_z
* @date 2018/8/1517:25
*/public class relay implements runnable
/*** 獲取執行緒名稱
*/system.out.println(thread.currentthread().getname()+"拿到了接力棒!");
/*** 迴圈判斷每10公尺輸出一次!
*/for(int i=0;i<100;i+=10) catch (interruptedexception e)
system.out.println(thread.currentthread().getname()+"跑了"+(i+10)+"公尺!");
}/**
* 停止執行緒,公尺數減100
*/thread.currentthread().stop();
track-=100;}}
}}
測試類:
package testthree.day06.test05;
/** * @author mr_z
* @date 2018/8/1517:30
*/public class test }}
猛的看上去,應該執行起來沒什麼問題,執行後**如圖所示:
結果執行多次後仍然是1執行緒結束後從10執行緒遞減至2。run方法debag後也沒什麼問題。當時卡主後做了會就放棄了,今天忽然想起來main方法也有程序,那麼for迴圈與run是同時進行的,而run方法中我給程序設定了thread.sleep();導致在1執行緒執行完之前,for迴圈就跑完了。也就是說,1執行緒進行完之後,10個執行緒都已經開啟。所以上圖執行結果就解釋清楚了。知道問題所在,解決起來就簡單了。下圖為修改後的測試類:
package testthree.day06.test05;
/** * @author mr_z
* @date 2018/8/1517:30
*/public class test }}
成功實現1-10接力。ok!細心很重要...... Java基礎 多執行緒
多執行緒的概念,如何在程式中建立多執行緒 thread runnable 執行緒安全問題,執行緒的同步,執行緒之間的通訊 死鎖。一 建立執行緒和啟動執行緒。為什麼要覆蓋run方法 thread類用於描述執行緒。該類就定義了乙個功能。用於儲存執行緒要執行的 該儲存功能就是run方法。也就是說threa...
Java多執行緒基礎
thread.currentthread 與this的區別 thread t1 new thread target 在上述 中,thread.currentthread 指的是t1執行緒,this指的是target執行緒。可重入鎖 setdaemon boolean on 將當前執行緒設定為守護執行...
java基礎複習 多執行緒
第一節 兩種建立方法 1繼承thread類,並複寫run方法 2實現runnable介面,並複寫run方法 3兩種方式的特點和優缺點,以及應用。賣票程式中,使用1方法建立的執行緒,每建立乙個執行緒,都有100張票。而我們想要的多個執行緒共同操作這100張票,這時就要使用第二種方法。第二節 執行緒的執...