最原始的方式,當(dāng)我們要并行的或者異步的執(zhí)行一個(gè)任務(wù)的時(shí)候,我們會(huì)直接使用啟動(dòng)一個(gè)線程的方式,如下面所示:

iOS培訓(xùn),Swift培訓(xùn),蘋果開(kāi)發(fā)培訓(xùn),移動(dòng)開(kāi)發(fā)培訓(xùn)

new Thread(new Runnable() {     @Override     public void run() {         // TODO Auto-generated method stub  這里放你要執(zhí)行的方法     } }).start();

iOS培訓(xùn),Swift培訓(xùn),蘋果開(kāi)發(fā)培訓(xùn),移動(dòng)開(kāi)發(fā)培訓(xùn)

 

  但是像上面或者類似這種每次來(lái)都是用new 一個(gè)Thread出來(lái)的方式存在著很多的弊端,如下面:

  • 每次new Thread新建對(duì)象性能差;

  • 線程缺乏統(tǒng)一的管理,可以無(wú)限制新建線程,相互之間競(jìng)爭(zhēng),還可能占用過(guò)多系統(tǒng)資源導(dǎo)致死機(jī)或者OOM(Out of Memory);

  • 缺乏更多的功能,如定時(shí)執(zhí)行、定期執(zhí)行、線程中斷等。

二、線程池

  為了解決這些問(wèn)題,Jdk1.5之后加入了java.util.concurrent包,這個(gè)包中主要介紹java中線程以及線程池的使用。為我們?cè)陂_(kāi)發(fā)中處理線程的問(wèn)題提供了非常大的幫助。

網(wǎng)友評(píng)論