`
seasons
  • 浏览: 109750 次
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

看线程池的实现

阅读更多
看线程池的实现:
ThreadPool{
    ThreadPool(){
        .....
        new WorkThread().start()//这里创建了新线程
        .....
    }
}
WorkThread.run(){
    while(!isInterrupted()){
        Runnable task = null;
        task = getTask();//这里会wait到有task来
        task.run();//这里不会创建新线程吗
    }
}

其实线程池的原理就在这里, 用start()才会创建新线程,而调用run()并不会创建新线程.
这里task为什么需要实现Runnable呢? 其实任何一个对象的方法都可以.Runnable只不过提供一个well-known接口而已.因为这里的task.run(), 没有用到任何跟Thread相关的东西.
从文档上看,run()的合约就是说可以执行任何动作的方法.
其实这里task倒真不需要实现Runnable,估计那样就是WorkManager了.
1
4
分享到:
评论

相关推荐

    Windows下一个比较完美的线程池实现和示例

    Windows下一个比较完美的线程池实现和示例 本线程池提供了如下功能: 1.能根据任务个数和当前线程的多少在最小/最大线程个数之间自动调整(Vista后的系统有 SetThreadpoolThreadMaximum 等函数有类似功能); 2.能方便...

    简单C++线程池实现

    总结来说,这个简单的C++线程池实现是一个学习多线程和并发编程的好起点。它通过封装线程管理和任务调度,为开发者提供了一种更高效、更可控的方式来处理并发任务。在实际应用中,线程池可以被扩展以适应更复杂的...

    Django异步任务线程池实现原理

    Django异步任务线程池实现原理主要涉及以下几个核心知识点: 1. 异步任务执行原理: 当Django应用在处理耗时的任务时,通常会阻塞主线程,导致用户在等待处理结果时无法进行其他操作。为了解决这个问题,Django采用...

    通过EasyExcel+线程池实现百万级数据从Excel导入到数据库

    在处理大量数据导入数据库的场景中,使用...通过以上步骤,可以利用EasyExcel和线程池实现百万级数据从Excel导入到数据库的功能。这种方式可以提高数据处理的效率,减少内存占用,并且能够更好地利用多核CPU的优势。

    Linux C系统编程:使用线程池实现cp命令

    总结起来,Linux C系统编程中使用线程池实现类似`cp`命令的功能,是一个涉及多线程编程、任务调度和同步控制的综合实践。通过这样的实现,我们可以提高文件复制操作的并发性和效率,同时降低系统资源的消耗。在深入...

    c++线程池实现原理分析

    ### C++线程池实现原理分析 #### 一、引言 线程池是一种软件设计模式,用于管理和控制大量线程的创建与销毁,尤其是在处理大量短期任务时,它可以显著提高程序性能。线程池的核心思想是预先创建一组线程,并让它们...

    线程池原理及创建(C++实现)

    ### 线程池原理及创建(C++实现) #### 一、线程池的重要性 在现代计算环境中,网络服务器面临着处理大量并发请求的挑战,其中包括但不限于Web服务器、电子邮件服务器和数据库服务器。这类服务器通常需要在短时间...

    C++实现线程池详解(基于boost源码以及封装等线程池)

    五、看看人家线程池怎么写的 - 要理解精髓 六、线程池应用场景与实践 6.1 服务器应用 6.2 数据处理与计算密集型任务 6.3 图形界面与事件驱动程序 七、C++线程池高级应用与实际案例 7.1 基于负载均衡的任务分配策略 ...

    一个简单线程池的实现

    在这个简单的线程池实现中,我们可以通过`pthread_pool.cpp`、`MainFunctionForTest.cpp`、`twork_work.cpp`、`pthread_pool.h`和`twork_work.h`这五个文件来理解其基本架构和工作原理。 首先,`pthread_pool.h`...

    C++11 简易线程池实现

    简易的C++11线程池实现,线程池为固定方式,后面会新增非固定模式。

    Python的线程池实现

    在本篇文章中,我们将深入探讨Python中的线程池实现,并参考提供的`ThreadPool.py`源码进行分析。 首先,Python标准库提供了一个名为`concurrent.futures`的模块,其中包含`ThreadPoolExecutor`类,它是实现线程池...

    线程池实现,通过C语言实现

    在给定的资源中,"200行C代码实现简单线程池.doc"可能包含了详细的设计和实现步骤,以及如何在实际项目中应用线程池的文档。而"threadpool.c"则是实际的C语言源代码文件,实现了线程池的核心功能。下面我们将探讨...

    java 线程池实现多并发队列后进先出

    在"java 线程池实现多并发队列后进先出"这个主题中,我们关注的是线程池如何利用特定类型的队列来实现后进先出(LIFO,Last-In-First-Out)的行为。通常,线程池默认使用先进先出(FIFO,First-In-First-Out)的队列...

    socket 线程池实现(已经在项目中应用)

    本篇文章将深入讲解如何在Socket服务端实现线程池,以及其在实际项目中的应用。 首先,我们来看`SocketServer.java`。这个文件通常包含了服务器端的主逻辑,其中包括了服务器的启动、监听客户端连接和创建线程池来...

    基于win32的C++线程池实现

    以下将详细讲解基于Win32的C++线程池实现的关键概念和技术。 首先,我们需要理解Win32 API中的线程池接口。Windows提供了CreateThreadpool、SetThreadpoolCallbackPool、QueueUserWorkItem等函数来创建和管理线程池...

    Java版线程池实现

    不过,上述代码展示的是一个自定义的线程池实现,它可能没有使用Java标准库中的`ExecutorService`。 这个自定义线程池的实现包括以下几个关键组件: 1. **线程池参数**: - `reserve`:保留线程数,这些线程不...

    使用线程池实现的Http上传下载实现

    前段时间发布了《Windows下一个比较完美的线程池实现和示例》(http://download.csdn.net/detail/fishjam/5106672),根据下载量和评论来看,对大家还比较有用。 现在发布一个利用该线程池实现的Http上传下载实现,...

    Windows自带的线程池的实现

    线程池的实现涉及到操作系统内核的调度策略和内存管理,它需要考虑线程的创建和销毁、资源的分配和回收、任务的调度和同步等多个方面。Windows线程池通过精细的内部机制优化了这些过程,从而为开发者提供了一个高效...

    Android下用线程池实现Http下载程序

    5. **异步下载**:通过线程池实现的下载是异步的,这意味着主线程不会被阻塞,用户界面仍然可以保持流畅。这是在Android中进行网络操作时必须遵循的原则,因为网络操作在主线程上执行会导致ANR(应用无响应)错误。 ...

    c++线程池的实现代码

    在C++中实现线程池,可以有效地管理和调度线程资源,避免频繁创建和销毁线程带来的开销。线程池的核心概念是任务队列,其中包含待处理的任务,而线程池中的工作线程会从队列中取出任务并执行。 在"C++线程池的实现...

Global site tag (gtag.js) - Google Analytics