1)什么是線程?
線程是操作系統(tǒng)能夠進行運算調(diào)度的最小單位,它被包含在進程之中,是進程中的實踐運作單位。程序員能夠經(jīng)過它進行多處理器編程,你能夠運用多線程對運算密集型使命提速。比方,假如一個線程完結(jié)一個使命要100毫秒,那么用十個線程完結(jié)改使命只需10毫秒。Java在語言層面臨多線程提供了杰出的支撐,它也是一個很好的賣點。
2)線程和進程有什么區(qū)別?
線程是進程的子集,一個進程能夠有許多線程,每條線程并行執(zhí)行不同的使命。不同的進程運用不同的內(nèi)存空間,而一切的線程共享一片相同的內(nèi)存空間。別把它和棧內(nèi)存搞混,每個線程都具有獨自的棧內(nèi)存用來存儲本地數(shù)據(jù)。
3)如安在Java中完成線程?
在語言層面有兩種辦法。java.lang.Thread類的實例便是一個線程但是它需求調(diào)用java.lang.Runnable接口來執(zhí)行,因為線程類本身便是調(diào)用的Runnable接口所以你能夠承繼java.lang.Thread類或許直接調(diào)用Runnable接口來重寫run()辦法完成線程。
4)用Runnable仍是Thread?
這個問題是上題的后續(xù),我們都知道我們能夠經(jīng)過承繼Thread類或許調(diào)用Runnable接口來完成線程,問題是,那個辦法更好呢?什么情況下運用它?這個問題很簡單回答,假如你知道Java不支撐類的多重承繼,但允許你調(diào)用多個接口。所以假如你要承繼其他類,當然是調(diào)用Runnable接口好了。
6)Thread類中的start()和run()辦法有什么區(qū)別?
這個問題經(jīng)常被問到,但仍是能從此區(qū)別出面試者對Java線程模型的了解程度。start()辦法被用來發(fā)動新創(chuàng)建的線程,而且start()內(nèi)部調(diào)用了run()辦法,這和直接調(diào)用run()辦法的作用不一樣。當你調(diào)用run()辦法的時候,只會是在原來的線程中調(diào)用,沒有新的線程發(fā)動,start()辦法才會發(fā)動新線程。
7)Java中Runnable和Callable有什么不同?
Runnable和Callable都代表那些要在不同的線程中執(zhí)行的使命。Runnable從JDK1.0開端就有了,Callable是在JDK1.5添加的。它們的主要區(qū)別是Callable的call()辦法能夠返回值和拋出反常,而Runnable的run()辦法沒有這些功能。Callable能夠返回裝載有計算結(jié)果的Future目標。
8)Java中CyclicBarrier和CountDownLatch有什么不同?
CyclicBarrier和CountDownLatch都能夠用來讓一組線程等候其它線程。與CyclicBarrier不同的是,CountdownLatch不能從頭運用。
9)Java內(nèi)存模型是什么?
Java內(nèi)存模型規(guī)定和指引Java程序在不同的內(nèi)存架構(gòu)、CPU和操作系統(tǒng)間有確定性地行為。它在多線程的情況下特別重要。Java內(nèi)存模型對一個線程所做的變動能被其它線程可見提供了確保,它們之間是先行產(chǎn)生關系。這個關系界說了一些規(guī)矩讓程序員在并發(fā)編程時思路更清晰。比方,先行產(chǎn)生關系確保了:
線程內(nèi)的代碼能夠按先后順序執(zhí)行,這被稱為程序次第規(guī)矩。
對于同一個鎖,一個解鎖操作一定要產(chǎn)生在時間上后產(chǎn)生的另一個鎖定操作之前,也叫做管程鎖定規(guī)矩。
前一個對volatile的寫操作在后一個volatile的讀操作之前,也叫volatile變量規(guī)矩。
一個線程內(nèi)的任何操作必需在這個線程的start()調(diào)用之后,也叫作線程發(fā)動規(guī)矩。
一個線程的一切操作都會在線程停止之前,線程停止規(guī)矩。
一個目標的完結(jié)操作必需在這個目標構(gòu)造完結(jié)之后,也叫目標完結(jié)規(guī)矩。
可傳遞性
我強烈建議我們閱覽《Java并發(fā)編程實踐》第十六章來加深對Java內(nèi)存模型的了解。
10)Java中的volatile變量是什么?
volatile是一個特殊的修飾符,只有成員變量才能運用它。在Java并發(fā)程序缺少同步類的情況下,多線程對成員變量的操作對其它線程是通明的。volatile變量能夠確保下一個讀取操作會在前一個寫操作之后產(chǎn)生,便是上一題的volatile變量規(guī)矩。
廣州天河區(qū)珠江新城富力盈力大廈北塔2706
020-38013166(網(wǎng)站咨詢專線)
400-001-5281 (售后服務熱線)
深圳市坂田十二橡樹莊園F1-7棟
Site/ http://www.szciya.com
E-mail/ itciya@vip.163.com
品牌服務專線:400-001-5281
長沙市天心區(qū)芙蓉中路三段398號新時空大廈5樓
聯(lián)系電話/ (+86 0731)88282200
品牌服務專線/ 400-966-8830
旗下運營網(wǎng)站:
Copyright ? 2016 廣州思洋文化傳播有限公司,保留所有權(quán)利。 粵ICP備09033321號