一、思考題
1.Java為什么要引入線程機制,線程、程序、進程之間的關系是怎樣的?
線程可以彼此獨立的執行,它是一種實現并發機制的有效手段,可以同時使用多個線程來完成不同的任務,并且一般用戶在使用多線程時并不考慮底層處理的細節。
進程(process)是程序的一次執行過程,或是正在運行的一個程序。線程是比進程小的程序執行單位,一個進程可以啟動多個線程同時運行,不同線程之間可以共享相同的內存區域和數據。
2.Java有哪幾種創建線程的方式?它們的區別是什么?
有三種方式,如下所示:
(1)繼承Thread類:編寫簡單,如果需要訪問當前線程,則無需使用Thread.currentThread()方法,直接使用this即可獲得當前線程。但線程類已經繼承了Thread類,所以不能再繼承其他父類。
(2)實現Runnable接口:避免由于Java單繼承帶來的局限性。但編程稍微復雜,如果要訪問當前線程,則必須使用Thread.currentThread()方法。
(3)使用Callable接口和Future接口創建多線程:避免由于Java單繼承帶來的局限性,有返回值,可以拋出異常。但編程稍微復雜,如果要訪問當前線程,則必須使用Thread.currentThread()方法。
3.什么是線程的生命周期?線程的生命周期中有哪幾種狀態?
線程從新建到死亡稱為線程的生命周期,線程有新建(New)、就緒(Runnable)、運行(Running)、阻塞(Blocked)和死亡(Terminated)五種狀態
4.啟動一個線程是用run()方法還是start()方法?
啟動一個線程是調用start()方法,使線程所代表的虛擬處理機處于可運行狀態,這意味著它可以由JVM調度
并執行。這并不意味著線程就會立即運行。run()方法可以產生必須退出的標志來停止一個線程。
5.當一個線程進入一個對象的synchronized方法后,其它線程是否可進入此方法?
不能,一個對象的一個synchronized方法只能由一個線程訪問。
相關文章
了解千鋒動態
關注千鋒教育服務號
掃一掃快速進入
千鋒移動端頁面
掃碼匿名提建議
直達CEO信箱