第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

細說多線程之Thread VS Runnable

難度初級
時長 1小時 0分
學習人數(shù)
綜合評分9.63
171人評價 查看評價
9.8 內容實用
9.6 簡潔易懂
9.5 邏輯清晰

已采納回答 / 內涵Naruto
MyThread mt=new MyThread(); Thread td1=new Thread(mt,"售票口1"); Thread td2=new Thread(mt,"售票口2"); Thread td3=new Thread(mt,"售票口3");說的是火車票,但是要通過實現(xiàn)Runnable接口,這樣才能真正意義的使其成為同一資源,如果是繼承Thread類,創(chuàng)建三次,就不是同一資源了,變成了15張票,就不算是同一資源了,是各自獨立的資源,我是這樣理解的

最贊回答 / Angel若夢
你的代碼有兩處錯誤1.用繼承Thread的方法實現(xiàn)多線程,需要new多個對象,這也是你在共享變量是加static的原因,所以,你使用的鎖對象this是不同的對象,所以不能實現(xiàn)線程的互斥.可以使用該類的字節(jié)碼對象Ticket.class作為鎖對象.2.如果已經(jīng)實現(xiàn)了互斥,你需要在同步代碼塊中增加一個判斷條件,用來終止程序繼續(xù)執(zhí)行,否則會出現(xiàn)打印負數(shù)的情況.因為, ?未獲得鎖的線程會在循環(huán)內等待,當一條線程將tickets--到0的時候,其他等待的線程獲得鎖以后會繼續(xù)執(zhí)行后續(xù)代碼,導致運行結果不準確.

已采納回答 / 鴻澤
可能是因為并非窗口1首先獲得CPU時間片,而是其他線程。首先是窗口2 ,執(zhí)行到count--之后,sysout時就被阻塞了。注意此時count=4。然后是窗口1 ,執(zhí)行了整個run方法 ,此時count=3。然后是窗口3 ,執(zhí)行了整個run方法 ,此時count=2。此時窗口2恢復,繼count--之后執(zhí)行,輸出count=3。然后是窗口3 ,執(zhí)行了整個run方法 ,此時count=0。當然這種并不一定是這樣,因為現(xiàn)在的多核CPU線程是可以同時執(zhí)行的。

最新回答 / 哀幻暝
<...圖片...>補充一個解決辦法

最新回答 / 飄游人
extends Thread的例子沒有問題。想實現(xiàn)的確實是3個窗口總共有5張票,老師故意用extends Thread的例子,就是為了說明這種方式達不到希望的效果(即實際出現(xiàn)的效果是你所說的“每個窗口擁有5張票”)。老師也在PPT中寫明,只有Runnable的方式才適合多個線程處理同一資源的情況。如果硬要用extends Thread來實現(xiàn)效果,確實像你說的可以加static關鍵字,但老師想告訴我們的是,對于這樣的情況,還是用Runnable好。

已采納回答 / ddyblack
查看老師的個人信息就可以看了啊

最新回答 / 無心水2012
共用一個變量,已經(jīng)到0了,while條件就退出了。只會打印一個0.

最贊回答 / sxian_wang
你的理解大致上是對的,但不是剛好打印的時候被窗口2減去一張票,過程是這樣的:當?shù)谝粋€線程獲得CPU的時間片后,它的代碼恰好執(zhí)行到println那一行后,剛準備輸出(但還沒有獲得tickets的值),這時候該線程的時間片被剝奪,等待下一次再獲得時間片。等到別的線程執(zhí)行完后,該線程再次獲得時間片,它去訪問tickets變量,應該tickets變量是被別的線程自減過得,所以獲得不是4,而是一個比4小的值。由于這種運算在現(xiàn)在的CPU上很快,就會出現(xiàn)前三個都是2的情況。如果你給println語句加上一個synchr...

最新回答 / good_2016
If you see the additional message "Unable to attach to 32-bit process running under WOW64", ? ?your application is running with 32bit Java while using 64bit Eclipse on Windows. ? ?Either using 64bit Java for your application or using 32bit Eclipse solv...

已采納回答 / 天啟之魂
...........建議你再好好學習一下...這里主線程是指的main函數(shù).......sc只是個對象....只是main線程中的一個代碼而已...這里能看到的就兩個線程 1個main線程 是主線程?? 一個是thread 線程. 設置成了守護線程...

已采納回答 / 天啟之魂
稍微說下 免得你誤解 不是每個方法都有一個線程 而是 main函數(shù)是程序的入口,你運行java程序的時候就默認開啟的是main線程 然后你有額外開啟了一個thread0的線程 所以有兩個線程羅!

最贊回答 / 哀幻暝
在這里一共有兩個線程①.守護線程 ?②主線程(main) ?老師說的:若沒有線程需要守護線程“守護”,那么守護線程就會退出程序運行之后兩條線程都在執(zhí)行:②線程再啟動了①線程然后 繼續(xù)執(zhí)行到sc.next()語句 等待鍵盤輸入①線程在啟動之后就不停的寫東西到文件中。如果在這之后的過程中,程序員在鍵盤中輸入的任意字符,毀導致②繼續(xù)執(zhí)行,然后②就執(zhí)行完啦,你看main方法中就那幾行代碼,全都執(zhí)行完啦! 然后主線程就退出啦! 然后①線程就沒有線程可以守護啦,自己也就退出啦!

最贊回答 / 剪忉手
繼承thread類和實現(xiàn)runnable接口本身就沒有什么可比性。兩者根部就不是同一類東西一個是接口,另一個是繼承類且這個thread類也是繼承了Runnable接口的。兩者不同在于方法的實現(xiàn)不同,我也可以在繼承thread類里寫runnable的方法。再有就是java單繼承的劣勢,這點上Runnable會更好些。

最新回答 / lmk_andriod
小哥,我回答的怎么樣,一定要給我一個最佳答案哦 ?嘿嘿
課程須知
學習本課程前,你需要熟練掌握Java的基礎語法,熟悉Java中創(chuàng)建線程的兩種方式,熟悉Java多線程中常用的一些方法。
老師告訴你能學到什么?
1、多線程創(chuàng)建方式的比較和選擇 2、線程的生命周期、守護線程

微信掃碼,參與3人拼團

微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復購買,感謝您對慕課網(wǎng)的支持!

本次提問將花費2個積分

你的積分不足,無法發(fā)表

為什么扣積分?

本次提問將花費2個積分

繼續(xù)發(fā)表請點擊 "確定"

為什么扣積分?

舉報

0/150
提交
取消