一、反射機制的應(yīng)用場景
成都創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供龍灣網(wǎng)站建設(shè)、龍灣做網(wǎng)站、龍灣網(wǎng)站設(shè)計、龍灣網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、龍灣企業(yè)網(wǎng)站模板建站服務(wù),十年龍灣做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。(相關(guān)教程推薦:java面試題)
逆向代碼 ,例如反編譯
與注解相結(jié)合的框架 例如Retrofit
單純的反射機制應(yīng)用框架 例如EventBus 2.x
動態(tài)生成類框架 例如Gson
二、什么是多線程?
多線程,是指從軟件或者硬件上實現(xiàn)多個線程并發(fā)執(zhí)行的技術(shù)。 在一個程序中,這些獨立運行的程序片段叫作“線程”,利用它編程的概念就叫作“多線程處理”。
具有多線程能力的計算機因有硬件支持而能夠在同一時間執(zhí)行多于一個線程,進(jìn)而提升整體處理性能。
主線程就是創(chuàng)建進(jìn)程中產(chǎn)生的第一個線程,也就是main函數(shù)對應(yīng)的線程。
(推薦學(xué)習(xí):java入門程序)
三、說一下多線程的好處?
1、多線程的優(yōu)點
創(chuàng)建一個新線程的代價要比創(chuàng)建一個新進(jìn)程小的多
線程之間的切換相較于進(jìn)程之間的切換需要操作系統(tǒng)做的工作很少
線程占用的資源要比進(jìn)程少很多
能充分利用多處理器的可并行數(shù)量
等待慢速 IO操作結(jié)束以后,程序可以執(zhí)行其他的計算任務(wù)
計算(CPU)密集型應(yīng)用,為了能在多處理器系統(tǒng)上運行,將計算分解到多個線程中實現(xiàn)
IO密集型應(yīng)用,為了提高性能,將IO操作重疊,線程可以等待不同的IO操作。
2、多線程的缺點
性能損失( 一個計算密集型線程是很少被外部事件阻塞的,無法和其他線程共享同一個處理器,當(dāng)計算密集型的線程的數(shù)量比可用的處理器多,那么就有可能有很大的性能損失,這里的性能損失是指增加了額外的同步和調(diào)度開銷,二可用資源不變。)
健壯性降低(線程之間是缺乏保護(hù)性的。在一個多線程程序里,因為時間上分配的細(xì)微差距或者是共享了一些不應(yīng)該共享的變量而造成不良影響的可能影響是很大的。)
缺乏訪問控制( 因為進(jìn)程是訪問控制的基本粒度,在一個線程中調(diào)用某些OS函數(shù)會對整個進(jìn)程造成影響 。)
編程難度提高(編寫和 調(diào)試一個多線程程序比單線程困難的多。)
四、線程和進(jìn)程有什么區(qū)別?
1、調(diào)度
進(jìn)程是操作系統(tǒng)分配資源的一個基本單位。線程是 CPU調(diào)度的基本單位。
2、并發(fā)性
引入線程之后,不僅進(jìn)程之間是可以并發(fā)執(zhí)行的,而且在一個進(jìn)程之中的多個線程也是 可以并發(fā)執(zhí)行的,甚至是允許一個進(jìn)程中 的全部進(jìn)程并發(fā)執(zhí)行。
同樣,不同的進(jìn)程中的線程也是可以并發(fā)執(zhí)行的。使得OS有 更好的并發(fā)性,提高了資源的利用率和系統(tǒng)吞吐量。
3、擁有資源
進(jìn)程可以擁有資源,并且是系統(tǒng)擁有資源的基本單位 。線程本身并不擁有系統(tǒng)資源,僅有一些能保證獨立運行 的資源,這塊資源的各個線程私有的。
例如,線程ID、一組寄存器、棧、errno、信號屏蔽字(一個進(jìn)程中pending信號只有一個,但是任意一個線程都可以處理這個信號)、調(diào)度優(yōu)先級。
4、獨立性
在同一進(jìn)程中線程的獨立性要比在不同的進(jìn)程中獨立性要低很多 。
5、系統(tǒng)開銷
線程切換的開銷低于進(jìn)程切換的開銷,
6、支持多處理機系統(tǒng)
對于傳統(tǒng)的進(jìn)程,也就是單線程進(jìn)程 ,不管有多少個處理機,進(jìn)程只能運行在同一個 處理機上面,但對于多線程進(jìn)程,就可以將一個進(jìn)程中的多個線程分配到多個處理機上面,使其并發(fā)執(zhí)行,加速了進(jìn)程的完成。
(視頻教程推薦:java視頻教程)
五、進(jìn)程和線程的應(yīng)用場景
需要頻繁創(chuàng)建銷毀優(yōu)先使用線程。
需要大量計算的優(yōu)先使用線程。
相關(guān)性較強的使用線程,相關(guān)性較弱使用進(jìn)程。
可能要擴(kuò)展到多機分布使用進(jìn)程,多核分布使用線程。