你的代碼我沒看,也沒運行。
站在用戶的角度思考問題,與客戶深入溝通,找到清豐網(wǎng)站設計與清豐網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設計與互聯(lián)網(wǎng)技術結合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網(wǎng)站建設、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、域名申請、雅安服務器托管、企業(yè)郵箱。業(yè)務覆蓋清豐地區(qū)。
但我可以很明確的告訴你,你是沒有辦法控制線程的執(zhí)行順序的,不知道你學沒學操作系統(tǒng),等你學了線程調度你就知道為什么了,多線程的一個特點就是不可重現(xiàn)性。像sleep這些函數(shù)只能在一定程度上控制你的線程執(zhí)行,但根本不是絕對的。因為當線程1在sleep時,系統(tǒng)也不一定會調用另一線程。
還有加鎖也不是為了控制線程的執(zhí)行順序,它的目的是為了保護共享的互斥資源。
鎖的競爭只發(fā)生在多個線程之間,代碼中兩個synchronized(a)在同一個線程里面(而且是一層包著另一層,里面的synchronized(a)變得毫無意義),所以能執(zhí)行
多線程臨界資源肯定不能寫線程內,要另外寫一個類,另外while(Tickets=0)這里明顯寫成了死循環(huán),所以以上代碼思路完全錯誤