`
ahua186186
  • 浏览: 563076 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

初始化线程池大小和获取线程池实例

 
阅读更多
  private void initThreadPool()
    {
        int i = Runtime.getRuntime().availableProcessors() * 2;//默认处理器的2倍,最小为5
        if(threadPoolSize < i)
            threadPoolSize = i;
        if(threadPoolSize < 5)
            threadPoolSize = 5;
        int j = threadPoolSize;
        threadPool = new ThreadPoolExecutor(threadPoolSize, j, 30L, TimeUnit.SECONDS, new ArrayBlockingQueue(10000), new java.util.concurrent.ThreadPoolExecutor.DiscardOldestPolicy());
    }
//实例化
public static TaskPool getInstance()
    {
        if(instance == null)
            synchronized(this)
            {
                if(instance == null)
                {
                    TaskPool taskpool = new TaskPool();
                    taskpool.initThreadPool();
                    instance = taskpool;
                }
            }
        return instance;
    }
分享到:
评论

相关推荐

    线程池和mysql连接池的实现

    1. 初始化线程池,设定线程数量。 2. 将任务添加到任务队列。 3. 线程池中的工作线程从队列中取出任务并执行。 4. 如果所有线程都在忙碌,新任务将被阻塞,直到有线程完成任务并变得可用。 5. 当线程池不再需要时,...

    tcp_thread_java.zip_Java 线程池_java TCP线程

    `StartServer.java`则是启动服务器的入口类,它会初始化TCP服务器并启动线程池。通过调用`TCPServer`的实例方法来绑定监听端口,并使用`Executors.newFixedThreadPool`创建线程池。`newFixedThreadPool`接收一个整数...

    一个简单的线程池例子

    1. **初始化**:线程池在启动时会创建一定数量的线程,这些线程称为工作线程。这些线程处于等待状态,等待接收任务执行。 2. **任务提交**:当有新的任务需要执行时,不是立即创建新线程,而是将任务添加到任务队列...

    C++线程池实例

    2. **初始化线程池**:在类的构造函数中,根据预定的线程数量创建工作线程,并启动它们。每个线程进入循环,等待从队列中获取任务。 3. **提交任务**:提供一个接口供用户提交任务,例如`enqueue(Task task)`函数。...

    linux 实现一个简单的线程池及工作

    - **创建线程池**:根据需求初始化线程池,创建指定数量的工作线程。 - **提交任务**:将任务添加到任务队列中。 - **调度任务**:线程池维护一个调度机制,选择线程处理任务队列中的任务。 - **执行任务**:...

    java线程池实例详细讲解

    例如,通过`ThreadPoolExecutor`的`getPoolSize()`、`getActiveCount()`和`getCompletedTaskCount()`等方法获取线程池状态信息,以便于分析和调整线程池的配置。同时,避免创建过多的线程池,因为每个线程池都会消耗...

    轻量级java多线程池demo

    2. **初始化线程池**:根据需求设置线程池的参数,如核心线程数、最大线程数、线程存活时间等,并创建一个`BlockingQueue`实例用于任务传递。 3. **提交任务**:使用线程池提供的接口,如`execute()`或`submit()`...

    MFC 线程池

    在你的应用程序中,你可以实例化`CThreadPool`对象,初始化线程池,然后通过`QueueUserWorkItem`添加任务到线程池中。当不再需要线程池时,记得调用`Terminate`来清理资源。 在实际应用中,为了更好地管理和控制...

    JAVA经典线程池源码

    - **核心线程数**:线程池初始化时创建的线程数,这些线程会一直存活,即使它们暂时没有任务可做。 - **最大线程数**:线程池允许的最大线程数,当提交的任务数量超过核心线程数时,新创建的线程不会超过这个值。 ...

    四大线程池的用法实例

    代码可能会包括对线程池的初始化,任务的提交,以及关闭线程池等步骤,以便于理解各种线程池的特性和使用方式。通过分析和运行这个示例,我们可以更直观地了解线程池在不同场景下的表现,从而更好地在实际项目中运用...

    Linux 线程池(Thread Pool)的实现原理 实例

    1. **初始化线程池**:创建线程池结构体,设置初始线程数量,初始化任务队列。 2. **创建工作线程**:根据预设的线程池大小,使用`pthread_create()`创建相应数量的工作线程。 3. **添加任务**:通过任务接口将任务...

    Delphi线程池实现多线程FTP分段下载组件

    调用本单元,将自动在程序初始化时生成线程池TThreadPoolDown实例 Share_ThreadPool_FTPDown 一、外部调用方法 外部只需要一次性调用 FtpDown() 函数向线程池加入下载任务,下载任务执行中的事件会通过调用时注册的...

    qt线程池的小例子

    1. 源代码文件(如main.cpp):这是程序的入口点,通常会包含QApplication的实例化和主循环,以及线程池的初始化和任务的提交。 2. 头文件(如threadpool.h):可能定义了自定义的QRunnable子类,用于实现特定的任务...

    LINUX C++ 线程池 框架

    1. **线程池管理器(CThreadManage)**: 这是用户与线程池交互的接口,负责初始化线程池,接收客户端提交的任务,并将任务分派给线程池执行。它不直接处理线程,而是调用线程池类(CThreadPool)的方法来管理和调度线程...

    linux线程池代码(c++实现)

    1. **创建线程池**:根据需求实例化线程池对象,设置线程池的大小。 2. **提交任务**:使用线程池提供的接口,向线程池提交多个任务。这些任务可以是自定义的函数或者对象的成员函数,通过`std::function`或函数...

    linux c 线程池连接mysql

    - 初始化:设置Epoll实例,创建线程池和数据库连接池。 - 监听客户端连接:使用Epoll的`epoll_ctl()`添加监听套接字到Epoll实例。 - 处理事件:通过`epoll_wait()`获取就绪事件,对新连接进行accept操作,然后将...

    Python实现的线程池

    1. 创建线程池,初始化一定数量的工作线程。 2. 用户通过线程池的submit方法提交任务。 3. 提交的任务被包装成Task对象,加入到任务队列。 4. 工作线程从队列中取出任务,执行任务并返回结果。 5. 如果所有工作线程...

    一个封装的很好的Delphi线程池类

    - `StartPool`: 初始化线程池,创建工作线程。 - `StopPool`: 安全地停止所有工作线程并清理资源。 - `ExecuteTask`: 被工作线程调用,从队列中获取并执行任务。 - `OnTaskCompleted`: 事件处理程序,当任务完成时...

    QTCPSocket线程池方法

    通过这样的设计,`myserver.cpp` 可能会包含服务器的初始化、绑定端口、接受连接等逻辑,而 `mytask.cpp` 可能包含了处理具体网络数据和业务逻辑的代码。每个 `MyTask` 实例会在单独的线程中运行,确保了服务器能够...

    linux c 线程池

    - **线程池初始化**:创建一定数量的工作线程,并将它们放入线程池。 - **任务队列**:用于存储待处理的任务,当有新的任务到来时,将其添加到队列。 - **任务调度**:调度策略决定了哪个线程获取并执行任务,...

Global site tag (gtag.js) - Google Analytics