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