大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

Java多線程編程概述
Java多線程的安全問(wèn)題
Java多線程同步
Java多線程間的通信
Java線程Lock
Java多線程管理
保障線程安全的設(shè)計(jì)技術(shù)
Java鎖的優(yōu)化及注意事項(xiàng)
Java多線程集合
【Java多線程】單例模式與多線程

Java線程池?cái)U(kuò)展

有時(shí)需要對(duì)線程池進(jìn)行擴(kuò)展,如在監(jiān)控每個(gè)任務(wù)的開(kāi)始和結(jié)束時(shí)間,或者自定義一些其他增強(qiáng)的功能。

ThreadPoolExecutor線程池提供了兩個(gè)方法:

● protected void afterExecute(Runnable r, Throwable t)

● protected void beforeExecute(Thread t, Runnable r)

在線程池執(zhí)行某個(gè)任務(wù)前會(huì)調(diào)用beforeExecute()方法,在任務(wù)結(jié)束后(任務(wù)異常退出)會(huì)執(zhí)行afterExecute()方法。

查看ThreadPoolExecutor源碼,在該類中定義了一個(gè)內(nèi)部類Worker, ThreadPoolExecutor線程池中的工作線程就是Worker類的實(shí)例, Worker實(shí)例在執(zhí)行時(shí)會(huì)調(diào)用beforeExecute()與 afterExecute()方法。

package com.wkcto.threadpool;

import com.wkcto.produerstack.MyStack;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

/**
 * 擴(kuò)展線程池
 */
public class Test06 {
    //定義任務(wù)類
    private static class  MyTask implements  Runnable{
         String name;

        public MyTask(String name) {
            this.name = name;
        }

        @Override
        public void run() {
            System.out.println(name + "任務(wù)正在被線程 " + Thread.currentThread().getId() + " 執(zhí)行");
            try {
                Thread.sleep(1000);     //模擬任務(wù)執(zhí)行時(shí)長(zhǎng)
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

    public static void main(String[] args) {
        //定義擴(kuò)展線程池, 可以定義線程池類繼承ThreadPoolExecutor,在子類中重寫beforeExecute()/afterExecute()方法
        //也可以直接使用ThreadPoolExecutor的內(nèi)部類
        ExecutorService executorService = new ThreadPoolExecutor(5, 5, 0, TimeUnit.SECONDS, new LinkedBlockingQueue<>() ){
            //在內(nèi)部類中重寫任務(wù)開(kāi)始方法
            @Override
            protected void beforeExecute(Thread t, Runnable r) {
                System.out.println(t.getId() + "線程準(zhǔn)備執(zhí)行任務(wù): " + ((MyTask)r).name);
            }

            @Override
            protected void afterExecute(Runnable r, Throwable t) {
                System.out.println( ((MyTask)r).name + "任務(wù)執(zhí)行完畢");
            }

            @Override
            protected void terminated() {
                System.out.println("線程池退出");
            }
        };

        //向線程池中添加任務(wù)
        for (int i = 0; i < 5; i++) {
            MyTask task = new MyTask("task-" + i);
            executorService.execute(task);
        }

        //關(guān)閉線程池
        executorService.shutdown();     //關(guān)閉線程池僅僅是說(shuō)線程池不再接收新的任務(wù) , 線程池中已接收的任務(wù)正常執(zhí)行完畢
    }
}

 

全部教程
主站蜘蛛池模板: 五月婷婷综合色 | 国内精品久久久久 | 99热久久只有精品6国产32 | 884hutv四虎永久7777 | 四虎影视国产精品亚洲精品hd | 国产日产精品_国产精品毛片 | 免费国产小视频在线观看 | 免费一级真人毛片 | 国产在线98福利播放视频免费 | 国产日韩欧美精品在线 | 香香影院在线观看 | 国产日韩欧美在线观看不卡 | 亚洲日本香蕉视频 | 波多野结衣一区二区 三区 波多野结衣一区二区三区 波多野结衣一区二区三区高清在线 | 操片免费看 | 久草免费精品视频 | 免费观看羞羞视频网站 | 91久久青草精品38国产 | 日韩一级精品视频在线观看 | 日本在线观看成人小视频 | 日本最黄视频 | 婷婷综合五月中文字幕欧美 | 高清国产精品入口麻豆 | 18禁片一级毛片视频播放免费看 | 亚洲国产精品欧美日韩一区二区 | 一日本道加勒比高清一二三 | 欧美激情久久欧美激情 | 国产美女精品视频 | 国产精品久久久久久久久久直 | 亚洲爱婷婷色婷婷五月 | 国产毛片女人18水多 | 99视频精品全部 在线 | 国产一区二区久久久 | 久久精品国产精品亚洲艾 | 亚洲欧美在线免费 | 欧美精品亚洲一区二区在线播放 | 国产午夜亚洲精品国产 | 兽皇在线观看 | 国产福利视频一区二区三区四区 | 亚洲四区 | 国产成人精品福利色多多 |