- 首頁|
- 網(wǎng)校|
- 焚題庫|
- APP |
-
微信公眾號(hào)
Q:線程和進(jìn)程的區(qū)別?
進(jìn)程:
具有一定獨(dú)立功能的程序關(guān)于某個(gè)數(shù)據(jù)集合上的一次運(yùn)行活動(dòng),是操作系統(tǒng)進(jìn)行資源分配和調(diào)度的一個(gè)獨(dú)立單位。
線程:
是進(jìn)程的一個(gè)實(shí)體,是 cpu 調(diào)度和分派的基本單位,是比進(jìn)程更小的可以獨(dú)立運(yùn)行的基本單位。
特點(diǎn):
線程的劃分尺度小于進(jìn)程,這使多線程程序擁有高并發(fā)性,
進(jìn)程在運(yùn)行時(shí)各自內(nèi)存單元相互獨(dú)立,線程之間內(nèi)存共享,
這使多線程編程可以擁有更好的性能和用戶體驗(yàn)
注意:多線程編程對(duì)于其它程序是不友好的,占據(jù)大量 cpu 資源。
Q:一個(gè)Java應(yīng)用程序至少有幾個(gè)線程?
兩個(gè):
主線程:負(fù)責(zé)main方法代碼的執(zhí)行,
垃圾回收器線程:負(fù)責(zé)了回收垃圾。
Q:如何停止一個(gè)線程?
Thread.stop(),不建議使用
通過一個(gè)變量去控制,當(dāng)符合這個(gè)條件時(shí),自動(dòng)結(jié)束。
interrupt()
Q:sleep() 和 wait() 有什么區(qū)別?
sleep()方法:
Thread類中的靜態(tài)方法,
當(dāng)一個(gè)線程調(diào)用sleep()方法以后,不會(huì)釋放同步資源鎖,其他線程仍然會(huì)等待資源鎖的釋放。
wait()方法:
Object類提供的一個(gè)普通方法,
而且必須同同步資源鎖對(duì)象在同步代碼塊或者同步方法中調(diào)用。
當(dāng)調(diào)用wait()方法后,當(dāng)前線程會(huì)立刻釋放掉同步鎖資源。其他線程就有機(jī)會(huì)獲得同步資源鎖從而繼續(xù)往下執(zhí)行。
Q:多線程的創(chuàng)建方式?
方式一:繼承 Thread 類
Thread 本質(zhì)上也是實(shí)現(xiàn)了 Runnable 接口的一個(gè)實(shí)例,它代表一個(gè)線程的實(shí)例,并且,啟動(dòng)線程的唯一方法就是通過 Thread 類的 start()實(shí)例方法。start()方法是一個(gè) native 方法,它將啟動(dòng)一個(gè)新線程,并執(zhí)行 run()方法。這種方式實(shí)現(xiàn)多線程很簡(jiǎn)單,通過自己的類直接 extend Thread,并重寫 run()方法,就可以啟動(dòng)新線程并執(zhí)行自己定義的 run()方法。例如:繼承 Thread 類實(shí)現(xiàn)多線程,并在合適的地方啟動(dòng)線程。
1public class MyThread extends Thread {2 public void run() {3 System.out.println("MyThread.run()");4}56MyThread myThread1 = new MyThread();7MyThread myThread2 = new MyThread();8myThread1.start();9myThread2.start();
方式二:實(shí)現(xiàn) Runnable 接口的方式實(shí)現(xiàn)多線程,并且實(shí)例化 Thread,傳入自己的 Thread 實(shí)例,調(diào)用 run( )方法
1public class MyThread implements Runnable {2 public void run() {3 System.out.println("MyThread.run()");4 }5}6 MyThread myThread = new MyThread();7 Thread thread = new Thread(myThread);8 thread.start();
方式三:通過Callable和Future創(chuàng)建線程
1 class T implements Callable
Q:談?wù)勀銓?duì)線程池的理解?jdk提供了哪幾種線程池?他們有什么區(qū)別?
線程池可以提高線程的創(chuàng)建和銷毀的開銷
jdk提供了以下幾種線程池:
new SingleThreadExecutor(單線程的線程池)
只有一個(gè)線程在執(zhí)行,相對(duì)于單線程執(zhí)行任務(wù)
new FixedThreadPool(固定線程數(shù)的線程池)
固定線程數(shù)處理任務(wù);當(dāng)任務(wù)過多,則固定的線程數(shù)誰先執(zhí)行完任務(wù),就執(zhí)行剩余任務(wù)
new ScheduledThreadPool(控制線程池定時(shí)周期任務(wù)執(zhí)行)
new CachedThreadPool(可緩存的線程池)
一般工作中使用的是new ThreadPoolExecutor
Q:說一下ThreadPoolExecutor各個(gè)參數(shù)的含義?
1ThreadPoolExecutor(2 int corePoolSize, //核心線程池大小3 int maximumPoolSize, //最大線程池大小4 long keepAliveTime, //線程最大空閑時(shí)間5 TimeUnit unit, //時(shí)間單位6 BlockingQueue
Q:說一下線程的生命周期?
新建狀態(tài)(New):
當(dāng)線程對(duì)象對(duì)創(chuàng)建后,即進(jìn)入了新建狀態(tài),如:Thread thread= new MyThread();
就緒狀態(tài)(Runnable):
當(dāng)調(diào)用線程對(duì)象的start()方法(t.start();),線程即進(jìn)入就緒狀態(tài)。處于就緒狀態(tài)的線程,只是說明此線程已經(jīng)做好了準(zhǔn)備,隨時(shí)等待CPU調(diào)度執(zhí)行,并不是說執(zhí)行了t.start()此線程立即就會(huì)執(zhí)行;
運(yùn)行狀態(tài)(Running):
當(dāng)CPU開始調(diào)度處于就緒狀態(tài)的線程時(shí),此時(shí)線程才得以真正執(zhí)行,即進(jìn)入到運(yùn)行狀態(tài)。
阻塞狀態(tài)(Blocked):
處于運(yùn)行狀態(tài)中的線程由于某種原因,暫時(shí)放棄對(duì)CPU的使用權(quán),停止執(zhí)行,此時(shí)進(jìn)入阻塞狀態(tài),直到其進(jìn)入到就緒狀態(tài),才有機(jī)會(huì)再次被CPU調(diào)用以進(jìn)入到運(yùn)行狀態(tài)。根據(jù)阻塞產(chǎn)生的原因不同,阻塞狀態(tài)又可以分為三種:
、俚却枞哼\(yùn)行狀態(tài)中的線程執(zhí)行wait()方法,使本線程進(jìn)入到等待阻塞狀態(tài);
、谕阶枞壕程在獲取synchronized同步鎖失敗(因?yàn)殒i被其它線程所占用),它會(huì)進(jìn)入同步阻塞狀態(tài);
、燮渌枞和ㄟ^調(diào)用線程的sleep()或join()或發(fā)出了I/O請(qǐng)求時(shí),線程會(huì)進(jìn)入到阻塞狀態(tài)。當(dāng)sleep()狀態(tài)超時(shí)、join()等待線程終止或者超時(shí)、或者I/O處理完畢時(shí),線程重新轉(zhuǎn)入就緒狀態(tài)。
死亡狀態(tài)(Dead):
線程執(zhí)行完了或者因異常退出了run()方法,該線程結(jié)束生命周期。
初級(jí)會(huì)計(jì)職稱中級(jí)會(huì)計(jì)職稱經(jīng)濟(jì)師注冊(cè)會(huì)計(jì)師證券從業(yè)銀行從業(yè)會(huì)計(jì)實(shí)操統(tǒng)計(jì)師審計(jì)師高級(jí)會(huì)計(jì)師基金從業(yè)資格稅務(wù)師資產(chǎn)評(píng)估師國際內(nèi)審師ACCA/CAT價(jià)格鑒證師統(tǒng)計(jì)資格從業(yè)
一級(jí)建造師二級(jí)建造師消防工程師造價(jià)工程師土建職稱房地產(chǎn)經(jīng)紀(jì)人公路檢測(cè)工程師建筑八大員注冊(cè)建筑師二級(jí)造價(jià)師監(jiān)理工程師咨詢工程師房地產(chǎn)估價(jià)師 城鄉(xiāng)規(guī)劃師結(jié)構(gòu)工程師巖土工程師安全工程師設(shè)備監(jiān)理師環(huán)境影響評(píng)價(jià)土地登記代理公路造價(jià)師公路監(jiān)理師化工工程師暖通工程師給排水工程師計(jì)量工程師
人力資源考試教師資格考試出版專業(yè)資格健康管理師導(dǎo)游考試社會(huì)工作者司法考試職稱計(jì)算機(jī)營養(yǎng)師心理咨詢師育嬰師事業(yè)單位教師招聘公務(wù)員公選考試招警考試選調(diào)生村官
執(zhí)業(yè)藥師執(zhí)業(yè)醫(yī)師衛(wèi)生資格考試衛(wèi)生高級(jí)職稱護(hù)士資格證初級(jí)護(hù)師主管護(hù)師住院醫(yī)師臨床執(zhí)業(yè)醫(yī)師臨床助理醫(yī)師中醫(yī)執(zhí)業(yè)醫(yī)師中醫(yī)助理醫(yī)師中西醫(yī)醫(yī)師中西醫(yī)助理口腔執(zhí)業(yè)醫(yī)師口腔助理醫(yī)師公共衛(wèi)生醫(yī)師公衛(wèi)助理醫(yī)師實(shí)踐技能內(nèi)科主治醫(yī)師外科主治醫(yī)師中醫(yī)內(nèi)科主治兒科主治醫(yī)師婦產(chǎn)科醫(yī)師西藥士/師中藥士/師臨床檢驗(yàn)技師臨床醫(yī)學(xué)理論中醫(yī)理論