`
tcxiang
  • 浏览: 87975 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

ReduceCopier.fetchOutputs()中线程的协作

 
阅读更多

ReduceCopier.fetchOutputs()中开了3种线程

1.cp mapoutput     MapOutputCopier

2.merge in mem   InMemFSMergeThread

3.merge in disk     LocalFSMerger

 

fetchOutputs方法中先会对map的location进行检查,然后shuffle以防止热点问题,最后得到的结果在

scheduledCopies。

 

所有线程对List<MapOutputLocation> scheduledCopies 的操作都是 synchronized (scheduledCopies)

MapOutputCopier中:

 

while (scheduledCopies.isEmpty()) {
                scheduledCopies.wait();
              }

 

 

 

fetchOutputs中:完成了混洗后:

scheduledCopies.notifyAll();

 

 

关于thread.join();

只能本线程对象调用,主程序要等到线程中join完成,才执行后面代码。

分享到:
评论

相关推荐

    xiancheng.zip_线程间通讯

    线程间通信主要解决的问题是,当两个或多个线程需要协作完成一项任务时,如何有效地传递信息和控制执行流程。下面我们将围绕标题“线程间通讯”和描述“通过代码实现线程间通讯,实现等待、唤醒等机制”来深入讲解...

    最新版鱼刺类.多线程6.ec模块

    最新版鱼刺类.多线程6.ec模块

    C#多线程刷新界面卡死测试程序

    1、测试调用委托时BeginInvoke和Invoke的表现差异 2、System.Timers.Timer多线程刷新界面 3、System.Threading.ThreadPool多线程刷新界面 4、System.Threading.Thread多线程刷新界面

    用成员变量进行线程通信.rar_线程通信

    在Java等编程语言中,线程通信通常用于解决共享数据的问题,确保线程间的协作和同步,防止数据竞争和死锁等问题。本资料“用成员变量进行线程通信.rar”似乎提供了一个实例,探讨如何利用类的成员变量实现线程间的...

    学习多线程之一:线程通信--利用事件对象.zip_线程通信

    在多线程编程中,线程通信是一个至关重要的概念,特别是在并发执行任务时,确保不同线程间的协作和数据同步。本教程将聚焦于利用事件对象进行线程间的通信,这是实现多线程同步的一种常见方法。 事件对象,通常称为...

    Java多线程.ppt

    Java多线程.pptJava多线程.pptJava多线程.pptJava多线程.pptJava多线程.pptJava多线程.pptvJava多线程.pptJava多线程.pptJava多线程.pptJava多线程.ppt

    Cpp.rar_多线程 pdf

    9. **线程间的协作**:包括线程的唤醒(`std::condition_variable::notify_one()`和`notify_all()`)和等待(`wait()`和`wait_for()`)。 通过阅读这份PDF,读者将能够深入理解C++的多线程编程,并掌握在Visual ...

    第20章 Part3 多线程互斥与协作.pdf

    ### 第20章 Part3:多线程互斥与协作 ...综上所述,互斥和协作是线程编程中的两个核心概念,对于编写高效稳定的多线程应用程序至关重要。通过正确理解和应用这些概念,开发者可以有效地避免竞态条件和其他并发问题。

    马士兵多线程笔记.zip

    10. **线程间的通信**:Java的BlockingQueue接口和相关的类(如ArrayBlockingQueue、LinkedBlockingQueue)提供了一种线程间通信的方式,允许线程在生产数据和消费数据之间进行协作。 马士兵的多线程训练营资料1和...

    多线程技术大全.电子书

    以上只是多线程技术的一部分,实际应用中还有线程间的协作、异常处理、线程安全编程等多个重要方面。《多线程技术大全》这本书将深入讨论这些话题,帮助网络编程人员掌握这一关键技能,提高软件的性能和稳定性。通过...

    C#.NET多线程实例6个(包括多线程基本使用,多线程互斥等全部多线程使用实例),可直接运行

    在.NET框架中,C#语言提供了强大的多线程支持,使得开发者可以充分利用现代多核处理器的优势,实现并行处理和高效能编程。本资源包含六个C#.NET多线程的实例,涵盖了多线程的基本使用到更高级的概念,如线程互斥。...

    C#多线程开发之并发编程经典实例.zip

    4. **线程间通信**:`WaitHandle`类(如`AutoResetEvent`, `ManualResetEvent`, `Mutex`, `Semaphore`)用于线程间的通信和同步,`Barrier`则用于多线程分阶段协作。 5. **线程优先级**:`Thread.Priority`属性可以...

    CVI 03.多线程数据保护(线程锁)

    4. **条件变量**:允许线程在满足特定条件后才能获取锁,这为线程间的协作提供了可能。例如,在C++中,`std::condition_variable`是条件变量的实现。 正确使用线程锁需要遵循一些最佳实践: - **避免死锁**:多个...

    多线程应用实例

    1. **生产者-消费者模型**:通过队列实现数据的生产与消费,线程间的协作模式。 2. **读写锁**:允许多个读取线程同时访问资源,但写入线程独占资源,提高并发性能。 **异常处理** 1. **线程异常处理**:每个线程都...

    C#多线程编程实战源码

    `Barrier`用于多线程协作,确保所有线程到达某个点后一起继续。 12. **线程本地存储**:`ThreadLocal&lt;T&gt;`类允许每个线程拥有自己的变量副本,避免了线程同步的需要。 13. **死锁和竞态条件**:多线程编程中常见的...

    多任务编程超入门-(2) 线程协作的理想和现实 示例代码

    在多任务编程的世界里,线程协作是实现高效...理解并熟练掌握这些概念和技巧,你就能在QT C++环境中自如地进行多任务编程,实现高效的线程协作。记得在实际项目中,根据具体需求灵活运用,才能充分发挥多线程的优势。

    VB.Net-C#多线程Thread-代理委托delegate编程

    VB.NET多线程——创建新线程.txt VB.NET多线程——高级同步技术.txt VB.NET多线程——线程池.txt Visual C#多线程参数传递浅析.txt WebBrowser控件-弹出新窗体和关闭窗口.txt WebBrowser控件的简单应用2.txt 多线程...

    CC++多线程编程练习题大全

    **CC++多线程编程**是现代软件开发中的重要组成部分,尤其在高性能计算、服务器端应用和实时系统中,多线程技术能充分利用多核处理器的资源,提高程序的执行效率。以下是一些关于CC++多线程编程的核心知识点: 1. *...

    线程——基本线程的应用和线程调用控件

    线程是计算机编程中的一个重要概念,特别是在多任务处理和并发执行的环境中。它允许一个程序在单个进程内部同时执行多个不同的代码段,这极大提高了应用程序的效率和响应性。在本文中,我们将深入探讨线程的基本应用...

    并发编程实践,全面介绍基础知识、JVM同步原语、线程安全、低级并发工具、线程安全容器、高级线程协作工具、Executor部分等

    本文将全面介绍Java并发编程的基础知识、JVM同步原语、线程安全、低级并发工具、线程安全容器、高级线程协作工具以及Executor服务。 1. **基础知识** - **并发与并行**:并发是指多个任务在同一时间段内交替执行,...

Global site tag (gtag.js) - Google Analytics