泛型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),線程切換開銷很小。
線程和進(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ù)線程類,另一種是實(shí)現(xiàn)可運(yùn)行接口。小結(jié):實(shí)現(xiàn)runnable接口比繼承thread類有以下優(yōu)點(diǎn):
1):適用于同一程序代碼的多個(gè)線程處理同一資源
2):避免了Java中單一繼承的限制
3):增加了程序的健壯性,提高了性能它的代碼質(zhì)量可以被多個(gè)線程共享,并且代碼和數(shù)據(jù)是獨(dú)立的
我在日常生活中使用的主要語言是C#和Java。在語法方面,寫C#更有趣。主要原因是C#有更多的語法糖,而且LINQ非常容易使用。其次,visualstudio被稱為世界上第一個(gè)ide。但個(gè)人更喜歡Java。
從java8出來后,我覺得Java正在追趕C#,Java和C#的語法越來越相似(原來很相似,哈哈)。這里有一些比較。
在java8中添加lambda表達(dá)式后,我感覺越來越像C。
1. 當(dāng)然,首先要看收入。在中國(guó),基本上沒有使用C的大公司。最初,攜程在使用它,但后來,它也轉(zhuǎn)向了Java。
2. 從技術(shù)的角度來看,有很多優(yōu)秀的框架可以使用,因?yàn)镴ava可以制造很多輪子。在實(shí)際項(xiàng)目中你遇到問題,別人一定遇到過,能找到問題的關(guān)鍵。
3. 從生態(tài)學(xué)的角度來看,Java無疑是最好的選擇之一,因?yàn)樗拈_源較早,建立生態(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就足夠了。
謝謝。