`
tcxiang
  • 浏览: 89511 次
  • 性别: 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_线程间通讯

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

    通过ActiveXExe文件建立多线程程序

    4. **线程同步**:使用`Join`、`Sleep`或`Mutex`等机制来控制线程的执行顺序和协作。 5. **异常处理**:确保每个线程都有适当的异常处理机制,以免一个线程的错误影响整个程序。 总的来说,通过ActiveX EXE文件...

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

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

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

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

    Xamarin.Android 非UI线程更新UI

    在Xamarin.Android开发中,非UI线程更新UI是一个常见的需求,但同时也涉及到线程安全问题。本篇文章将深入探讨如何在Xamarin.Android环境中正确地从非UI线程(也称为后台线程)更新用户界面。 首先,我们需要理解...

    马士兵多线程笔记.zip

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

    Cpp.rar_多线程 pdf

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

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

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

    多线程技术大全.电子书

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

    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`是条件变量的实现。 正确使用线程锁需要遵循一些最佳实践: - **避免死锁**:多个...

    duoxiancheng.rar_delphi 多线程_多线程

    这可能涉及到线程间的协作,如线程间的数据交换,以及如何在主线程(UI线程)和工作线程之间安全地更新界面。 总之,理解和掌握多线程技术对于提高Delphi应用程序的效率和用户体验至关重要。通过合理地运用多线程,...

    多线程应用实例

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

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

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

    java 多线程的小游戏 Java 课程设计 Java毕业设计 多线程的小游戏 经典

    在这个课程设计或毕业设计项目中,学生通常会被要求实现一个能够展示多线程特性的游戏,比如经典的“猜数字”或者“抢红包”等,这些游戏都需要多个线程协作来完成。 首先,我们来看多线程的基本概念。在Java中,...

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

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

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

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

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

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

    java一个多线程的经典例子.doc

    在示例中没有使用`join()`,但它是多线程协作的一个重要方法。 8. **异常处理**:在`sleep()`、`interrupt()`等可能抛出`InterruptedException`的方法中,通常会捕获并处理这个异常,以防止程序中断。 9. **线程...

Global site tag (gtag.js) - Google Analytics