java 線程池面試及答案 Java線程池?
Java線程池?多線程是為了也能讓計(jì)算機(jī)資源合不合理的分配,相對(duì)于如何處理有所不同的任務(wù)創(chuàng)建家族差別的線程接受處理,但是計(jì)算機(jī)創(chuàng)建一個(gè)線程或則完全銷毀一個(gè)線程所花費(fèi)的又是也很價(jià)格不菲的,有時(shí)侯必須另外
Java線程池?
多線程是為了也能讓計(jì)算機(jī)資源合不合理的分配,相對(duì)于如何處理有所不同的任務(wù)創(chuàng)建家族差別的線程接受處理,但是計(jì)算機(jī)創(chuàng)建一個(gè)線程或則完全銷毀一個(gè)線程所花費(fèi)的又是也很價(jià)格不菲的,有時(shí)侯必須另外如何處理的事情比較多,就不需要我們過(guò)度的進(jìn)行線程的創(chuàng)建戰(zhàn)隊(duì)和銷毀,那樣花費(fèi)的時(shí)間都是都很多的。沒(méi)辦法,我們就也可以引用線程池的概念。
說(shuō)白線程池那是將線程幾乎全部管理過(guò)來(lái),當(dāng)不需要線程的時(shí)候,這個(gè)可以從線程池中獲取多余的時(shí)間的線程,那樣也可以會(huì)減少線程的正常創(chuàng)建家族與完全銷毀,節(jié)省時(shí)間比較大的時(shí)間和會(huì)減少很多不必要的不能操作。
在java中提供給了ThreadPoolExecutor類來(lái)參與線程的管理,這個(gè)類無(wú)法繼承于AbstractExecutorService,而AbstractExecutorService基于了ExecutorService接口,我們是可以不使用ThreadPoolExecutor來(lái)并且線程池的創(chuàng)建角色。
java什么是線程池及為什么要使用線程池?
創(chuàng)建角色線程要花了昂貴的資源和時(shí)間,如果任務(wù)他們來(lái)了才創(chuàng)建角色線程那你響應(yīng)延遲能變長(zhǎng),并且一個(gè)進(jìn)程能創(chuàng)建家族的線程數(shù)最多。為了以免這些問(wèn)題,在程序啟動(dòng)后的時(shí)候就修改若干線程來(lái)響應(yīng)處理,它們被稱做線程池,里面的線程叫工作線程。從JDK1.5結(jié)束,JavaAPI需要提供了Executor框架讓你也可以創(chuàng)建角色相同的線程池。.例如單線程池,你每次全面處理一個(gè)任務(wù);數(shù)目固定設(shè)置的線程池的或是緩存線程池(一個(gè)更適合很多生存期短的任務(wù)的程序的可擴(kuò)展線程池)。
多線程面試題?
繼承Thread類,格式化處理run方法(總之Thread類本身也實(shí)現(xiàn)程序了Runnable接口)
2.實(shí)現(xiàn)方法Runnable接口,寫(xiě)回kick方法
3.利用Callable接口,覆寫(xiě)call方法(有返回值)
4.使用線
程池(有直接返回
在具體一點(diǎn)多線程編程實(shí)踐中,要如何最好選擇Runnable我還是Thread?
Java中實(shí)現(xiàn)多線程有兩種方法:繼承Thread類、實(shí)現(xiàn)Runnable接口,在程序開(kāi)發(fā)中如果能是多線程,絕對(duì)永遠(yuǎn)以實(shí)現(xiàn)方法Runnable接口為主兼顧,畢竟利用Runnable接口相比繼承Thread類有如下優(yōu)勢(shì):
1、可以以免由于Java的單繼承特性而帶來(lái)的局限;
2、增加程序的健壯性,代碼也能被多個(gè)線程鏈接共享,代碼與數(shù)據(jù)是的的的;
比較適合多個(gè)同一程序代碼的線程區(qū)去處理同一資源的情況。