泛型java java的thread和runnable有什么區(qū)別?
java的thread和runnable有什么區(qū)別?進(jìn)程:每個(gè)進(jìn)程都有自己的代碼和數(shù)據(jù)空間(進(jìn)程上下文),在進(jìn)程之間切換會(huì)花費(fèi)很多。一個(gè)進(jìn)程包含1--N個(gè)線程。線程:同一種線程共享代碼和數(shù)據(jù)空間,每個(gè)
java的thread和runnable有什么區(qū)別?
進(jìn)程:每個(gè)進(jìn)程都有自己的代碼和數(shù)據(jù)空間(進(jìn)程上下文),在進(jìn)程之間切換會(huì)花費(fèi)很多。一個(gè)進(jìn)程包含1--N個(gè)線程。
線程:同一種線程共享代碼和數(shù)據(jù)空間,每個(gè)線程都有自己的運(yùn)行堆棧和程序計(jì)數(shù)器(PC),線程切換開(kāi)銷(xiāo)很小。
線程和進(jìn)程分為五個(gè)階段:創(chuàng)建、準(zhǔn)備、運(yùn)行、阻止和終止。多進(jìn)程意味著操作系統(tǒng)可以同時(shí)運(yùn)行多個(gè)任務(wù)(程序)。
多線程是指在同一程序中執(zhí)行多個(gè)順序流。在Java中實(shí)現(xiàn)多線程有兩種方法,一種是繼續(xù)線程類(lèi),另一種是實(shí)現(xiàn)可運(yùn)行接口。小結(jié):實(shí)現(xiàn)runnable接口比繼承thread類(lèi)有以下優(yōu)點(diǎn):
1):適用于同一程序代碼的多個(gè)線程處理同一資源
2):避免了Java中單一繼承的限制
3):增加了程序的健壯性,提高了性能它的代碼質(zhì)量可以被多個(gè)線程共享,并且代碼和數(shù)據(jù)是獨(dú)立的
我在日常生活中使用的主要語(yǔ)言是C#和Java。在語(yǔ)法方面,寫(xiě)C#更有趣。主要原因是C#有更多的語(yǔ)法糖,而且LINQ非常容易使用。其次,visualstudio被稱(chēng)為世界上第一個(gè)ide。但個(gè)人更喜歡Java。
從java8出來(lái)后,我覺(jué)得Java正在追趕C#,Java和C#的語(yǔ)法越來(lái)越相似(原來(lái)很相似,哈哈)。這里有一些比較。
在java8中添加lambda表達(dá)式后,我感覺(jué)越來(lái)越像C。
1. 當(dāng)然,首先要看收入。在中國(guó),基本上沒(méi)有使用C的大公司。最初,攜程在使用它,但后來(lái),它也轉(zhuǎn)向了Java。
2. 從技術(shù)的角度來(lái)看,有很多優(yōu)秀的框架可以使用,因?yàn)镴ava可以制造很多輪子。在實(shí)際項(xiàng)目中你遇到問(wèn)題,別人一定遇到過(guò),能找到問(wèn)題的關(guān)鍵。
3. 從生態(tài)學(xué)的角度來(lái)看,Java無(wú)疑是最好的選擇之一,因?yàn)樗拈_(kāi)源較早,建立生態(tài)學(xué)的時(shí)間也較早。
4. 在性能方面,sun/Oracle熱點(diǎn)JVM內(nèi)置的JIT編譯器在運(yùn)行時(shí)對(duì)字節(jié)碼進(jìn)行了優(yōu)化。如果它不是一個(gè)性能敏感的應(yīng)用程序,Java就足夠了。
謝謝。