Executors 工具類 創建 的 線程池
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;public class ThreadPoolTest {
static int num = 100;
public static void main(String[] args) throws InterruptedException {
//固定線程數量的線程池,有任務就派空閑線程去執行,多余的任務等待
//ExecutorService pool= Executors.newFixedThreadPool(3);
//根據任務需要,自動創建線程,且 前面已創建的線程,空閑時,可被復用
//ExecutorService pool= Executors.newCachedThreadPool();
//單個線程,若執行期出現失敗而終止此單個線程,則會建一個新線程來代替,運行任務
ExecutorService pool= Executors.newSingleThreadExecutor();
//給線程池加 10條任務
for (int j= 0; j < 10; j++) {
final int task = j;
pool.execute(new Runnable() {@Override public void run() { // TODO Auto-generated method stub for (int i=0; i < 10; i++) { System.out.println(Thread.currentThread().getName() + "--" +i + "--" + task + " of taks" + " 計數:" + (--num)); } } }); // Thread.sleep(20); } //可安排在給定的延遲后運行或定期執行的命令。 ScheduledExecutorService service = Executors.newScheduledThreadPool(3); for (int i = 0; i < 5; i++) { final int x = i; service.scheduleAtFixedRate(new Runnable() { @Override public void run() { // TODO Auto-generated method stub System.out.println("Boon " + x + " " + Thread.currentThread().getName()); } },0,2,TimeUnit.SECONDS);//延遲0秒,周期2秒 } //poor.shutdownNow();//試圖馬上停了所有正在執行的任務,返回任務列表 pool.shutdown();//把分配給線程池的任務都執行完,就不再等待接受新任務了, // service.shutdown(); }
}</pre>
本文由用戶 cp5m 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!