日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

多线程买票案例

發布時間:2025/3/12 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 多线程买票案例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

測試類

package thead;public class testThread {public static void main(String [] arg){Tickets ticket = new Tickets();Thread t1 = new Thread(ticket,"窗口一:");Thread t2 = new Thread(ticket,"窗口二:");Thread t3 = new Thread(ticket,"窗口三:");t1.start();t2.start();t3.start();/* 注意:Thread中的start()方法是線程的就緒,而線程的啟動,需要等待CPU的調度(也就是所謂的線程搶資源);run()方法的方法體代表了線程需要完成的任務,稱之為線程執行體。void start() 使該線程開始執行;Java 虛擬機調用該線程的 run 方法。//即啟動線程start方法會自動調用該類中重寫的run方法*//* 同步鎖與資源共享:CPU可能隨機的在多個處于就緒狀態中的線程中進行切換,這時就可能出現線程的安全問題;線程安全問題,其實是指多線程環境下對共享資源的訪問可能會引起此共享資源的不一致性,而解決安全問題則需要同步鎖的加入,執行synchronized部分代碼的時候必須需要對象鎖,而一個對象只有一個鎖,只有執行完synchronized里面的代碼后釋放鎖,其他線程才可以獲得鎖,那么就保證了同一時刻只有一個線程訪問synchronized里面的代碼。實現資源共享的關鍵是,只有一個實例,synchronized使用的是同一把鎖,用實例的鎖或者定義一個實例。這就需要使用實現Runnable接口的方式,實現多線程,這樣傳入的是一個實例。繼承Thread的方式,傳入的是多個實例,每個實例都有一個鎖,那就無法實現控制。*/} }

實現了runnable接口的類

package thead;public class Tickets implements Runnable{// 為了讓線程共享一個資源所以我們定義一個靜態成員變量private static int tickets = 100;Object obj = new Object();@Overridepublic void run() {while (true) {synchronized (Tickets.class) {try {if (tickets > 0) {// Thread.sleep(100); 只是為了打印的效果,一行一行打印,如果不加則,所有結果一下子全都出來了// getName:獲取線程的名字,就是main方法里的第二個參數System.out.println(Thread.currentThread().getName() + "正在售出第" + (tickets--) + "張票");}} catch (Exception e) {e.printStackTrace();}}}} }

總結

以上是生活随笔為你收集整理的多线程买票案例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。