liurunyu
2024-04-15 55d5046ae0a9da1109e402d7d719f765a4bccdae
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
package com.dy.common.threadPool;
 
 
public class TreadPoolFactory {
 
    private static ThreadPool.Pool pool_short ;//短工作任务线程池,线程工作用时较短
    private static ThreadPool.Pool pool_long ;//长工作任务线程池,线程工作用时较长
    
    /**
     * 初始化线程池
     * @param poolName 线程池和线程名称
     * @param maxNum 线程池最大线程数 ,若为-1,不受限制
     * @param minNum 线程池最小线程数,或初始线程数
     * @param freeTimeout 空闲线程超时时长(秒)
     * @param busyTimeout 忙碌线程超时时长(秒),若为-1,不受限制
     * @return 线程池实例
     */
    public final static void initThreadPoolShort(String poolName, 
            int maxNum,
            int minNum, 
            long freeTimeout, 
            long busyTimeout) throws Exception {
        if(pool_short!= null){
            throw new Exception("线程池不能重复初始化!");
        }
        if(pool_short == null){
            pool_short = new ThreadPoolImp().new MyThreadPool(poolName, maxNum, minNum, freeTimeout, busyTimeout);
        }
    }
    
    /**
     * 初始化线程池
     * @param poolName 线程池和线程名称
     * @param maxNum 线程池最大线程数,若为-1,不受限制
     * @param minNum 线程池最小线程数,或初始线程数
     * @param freeTimeout 空闲线程超时时长(秒)
     * @param busyTimeout 忙碌线程超时时长(秒),若为-1,不受限制
     * @return 线程池实例
     */
    public final static void initThreadPoolLong(String poolName, 
            int maxNum,
            int minNum, 
            long freeTimeout, 
            long busyTimeout) throws Exception {
        if(pool_long!= null){
            throw new Exception("线程池不能重复初始化!");
        }
        if(pool_long == null){
            pool_long =  new ThreadPoolImp().new MyThreadPool(poolName, maxNum, minNum, freeTimeout, busyTimeout);
        }
    }
    /**
     * 得到唯一线程池实例
     * @return
     * @throws Exception
     */
    public final static ThreadPool.Pool getThreadPoolShort()
        throws Exception {
        if (pool_short == null) {
            throw new Exception("得到线程池前首先必须初始化!");
        }
        return pool_short ;
    }
    /**
     * 得到唯一线程池实例
     * @return
     * @throws Exception
     */
    public final static ThreadPool.Pool getThreadPoolLong()
        throws Exception {
        if (pool_long == null) {
            throw new Exception("得到线程池前首先必须初始化!");
        }
        return pool_long ;
    }
 
}