【轉】這篇文章主要介紹了java多線程編程實例,分享了幾則多線程的實例代碼,具有一定參考價值,加深多線程編程的理解還是很有幫助的,需要的朋友可以參考下。
1.三個售票窗口同時出售20張票
程序分析:
(1)票數要使用同一個靜態值
(2)為保證不會出現賣出同一個票數,要java多線程同步鎖。
設計思路:
(1)創建一個站台類Station,繼承Thread,重寫run方法,在run方法里面執行售票操作!售票要使用同步鎖:即有一個站台賣這張票時,其他站台要等這張票賣完!
(2)創建主方法調用類
(一)創建一個站台類,繼承Thread

(二)創建主方法調用類

程序運行結果:
窗口1賣出了第20張票
窗口2賣出了第19張票
窗口3賣出了第18張票
窗口3賣出了第17張票
窗口1賣出了第16張票
窗口2賣出了第15張票
窗口3賣出了第14張票
窗口1賣出了第13張票
窗口2賣出了第12張票
窗口2賣出了第11張票
窗口1賣出了第10張票
窗口3賣出了第9張票
窗口3賣出了第8張票
窗口1賣出了第7張票
窗口2賣出了第6張票
窗口3賣出了第5張票
窗口1賣出了第4張票
窗口2賣出了第3張票
窗口3賣出了第2張票
窗口1賣出了第1張票
票賣完了
可以看到票數是不會有錯的!
2.兩個人AB通過一個賬戶A在櫃台取錢和B在ATM機取錢!
程序分析:
錢的數量要設置成一個靜態的變量,兩個人要取的同一個對象值。
(一)創建一個Bank類
(二)創建一個PersonA類

(三)創建一個PersonB類

(四)創建主方法的調用類

運行結果:

可以看到取完就停止運行了。
3.龜兔賽跑問題
龜兔賽跑:2000米
要求:
(1)兔子每 0.1 秒 5 米的速度,每跑20米休息1秒;
(2)烏龜每 0.1 秒跑 2 米,不休息;
(3)其中一個跑到終點后另一個不跑了!
程序設計思路:
(1)創建一個Animal動物類,繼承Thread,編寫一個running抽象方法,重寫run方法,把running方法在run方法里面調用。
(2)創建Rabbit兔子類和Tortoise烏龜類,繼承動物類
(3)兩個子類重寫running方法
(4)本題的第3個要求涉及到線程回調。需要在動物類創建一個回調接口,創建一個回調對象。
(一)創建Animal動物類

(二)創建Rabbit兔子類

(三)創建Tortoise烏龜類

(四)創建一個讓動物線程停止的類,這里要實現回調接口

(五)創建一個主方法調用類

運行結果:

4. 線程示例總結
(1)代碼塊鎖是一個防止數據發生錯誤的一個重要手段;
(2)對象的統一性是非常重要的,這要想到對象的傳入問題,要操作的對象只能new一次,其他的操作都是對這個傳入的對象進行的,才能保證數據一致性,完整性和正確性。
————————————————
版權聲明:本文為CSDN博主「延陵縹緲」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_34996727/article/details/80416277
