0 0

遇到一个多线程的场景,熟悉的请帮忙看下0

需要实现一个功能, 多个线程去做一件事情,现在要等待这些线程的数量达到一个界限的时候再批量执行具体的逻辑然后将结果返回给各个线程, 比如 进来了30个线程,那么我要获取到这30个线程的请求值,然后通过一个线程批量得到结果后再把结果返回给原来的30个线程,这种需求在多线程上应该怎么样实现,请各位大神支招
2013年6月26日 09:28

5个答案 按时间排序 按投票排序

0 0

用wait notifyAll就能搞定
共享资源用一个大小为30的数组 int[30] shareResource
来了线程就wait()
等30个线程都来了 执行批量操作,结果保存在shareResource, 然后notifyAll



2013年6月27日 10:42
0 0

cyclicbarrier和主动对象模式都可以解决,主动对象模式需要解决的是Active Object的生成,满足拥有30个来源数据,也是一个barrier问题。cyclicbarrier需要解决的是他的重置,或者是为后来的N*30个线程生成新的barrier,这个过程要安全。

2013年6月26日 15:24
0 0

主动对象模式,上网很多资料的。

2013年6月26日 13:16
0 0

楼上说的cyclicbarrier 是一组线程等待到大家都就绪了一起执行。

而楼主要的是 N个线程生产内容 都生成完了 交给某个线程处理 处理完成后再交给N个线程
即可以使用线程池+Future:
1、向线程池提交N个线程 获取Future,调用get等待
2、如果大家都完成了,Future会返回,这样当前线程就可以处理
3、再往线程池提交N个线程处理,如此循环

2013年6月26日 10:45
0 0

或许你可以尝试使用cyclicbarrier + callable, 看能不能解决你的问题。

2013年6月26日 10:37

相关推荐

    C#多线程互斥实例 多线程获取同一变量

    2. **共享资源**:在多线程环境中,多个线程可能需要访问同一个数据或对象,这就形成了共享资源。 3. **竞态条件**:当两个或多个线程同时访问并修改共享资源时,如果没有适当的同步措施,可能导致数据的不一致性,...

    Qt中利用OpenCV2.4.4多线程打开多摄像机

    模拟了一个16个摄像机的场景,有不开多线程和打开多线程的对比。 可以明显感觉到打开多线程后主界面不卡了。 只是个多线程的小例子,还有很多不足之处,有待各位完善。 注意:pro文件中的include和lib文件目录需要...

    .NET多线程实例

    在多线程场景下,每个部分可以由不同的线程处理,但同样需要注意线程同步以防止UI更新问题。 总之,这个.NET 2.0的多线程实例涵盖了多线程的创建与管理、线程同步、UI更新、文件系统操作、异步编程等多个核心知识点...

    多线程在三维场景中的应用

    在三维场景的渲染和可视化中,多线程技术是一种重要的优化手段,尤其在处理大规模数据时,能够显著提升性能和用户体验。本报告主要探讨了多线程如何应用于三维场景的实时可视化,以及相关的优化策略。 1. 地理信息...

    socket 一个服务器对应多个客户端使用多线程

    在标题"socket 一个服务器对应多个客户端使用多线程"中,提到的是使用Socket编程来设计一个服务器,该服务器能够同时处理来自多个客户端的连接请求,这通常被称为“一对一”或“一对多”模型。在Linux环境下,这种...

    多线程导入excel 数据

    在Java编程中,多线程导入Excel数据是一项常见的任务,特别是在大数据处理和高并发场景下。这个场景通常涉及到性能优化和资源管理,以确保系统稳定性和数据一致性。下面将详细阐述多线程导入Excel数据的核心知识点。...

    一个多线程示例程序及多线程常见问题介绍

    在这个主题中,我们将深入探讨一个多线程示例程序以及在使用多线程时可能遇到的常见问题。 首先,我们来看标题中提到的"一个多线程示例程序"。在C++Builder中,创建多线程通常涉及使用`TThread`类,这是VCL(Visual...

    C#多线程连接mysql,Access

    可能需要设计一个包含多种测试场景的基准测试框架,以便更全面地评估两个数据库在多线程环境下的表现。 在实际应用中,选择MySQL还是Access通常取决于项目需求。MySQL适合大型、高性能的Web应用,提供强大的扩展性...

    java多线程导出excel(千万级别)优化

    Java多线程导出Excel是处理大数据量时的一种高效策略,尤其在面对千万级别的数据时。传统的Apache POI库在处理大规模数据时可能会遇到栈溢出(StackOverflowError)和内存溢出(OutOfMemoryError)等问题,因为这些...

    Qt 中利用 OpenCV2.4.4 多线程打开多摄像机

    模拟了一个16个摄像机的场景,有不开多线程和打开多线程的对比。 可以明显感觉到打开多线程后主界面不卡了。 只是个多线程的小例子,还有很多不足之处,有待各位完善。 注意:pro文件中的include和lib文件目录需要...

    多线程全面遍历磁盘文件

    在IT领域,多线程遍历磁盘文件是一项常见的任务,尤其在大数据处理、文件管理系统以及备份恢复等场景中。本文将深入探讨如何利用多线程技术高效地遍历包括隐藏文件和系统文件在内的所有磁盘文件。 首先,我们要理解...

    深入浅出 Java 多线程.pdf

    在本文中,我们将深入浅出Java多线程编程的世界,探索多线程编程的基本概念、多线程编程的优点、多线程编程的缺点、多线程编程的应用场景、多线程编程的实现方法等内容。 一、多线程编程的基本概念 多线程编程是指...

    udp多线程例子

    在多线程环境下,每个线程可以独立处理一个特定的任务,比如一个线程负责接收数据,另一个线程负责发送数据。创建线程通常用到`pthread_create()`函数,线程函数会执行相应的任务,如调用`recvfrom()`接收来自UDP的...

    QT+OPENGL 多线程测试

    在多线程环境中,纹理拷贝指的是在一个线程中加载图像数据,然后将其传输到另一个线程,用于OpenGL的渲染。这通常涉及到内存管理,确保数据安全地在不同线程间传递,避免数据竞争和同步问题。 **5. 渲染** 在OpenGL...

    c++多线程编程的十个例子

    在C++编程中,多线程技术是一种强大的工具,它允许程序同时执行多个任务,从而提高了效率和响应性。以下是对“C++多线程编程的十个例子”的详细讲解,这些例子将帮助你在Windows环境下深入理解和应用多线程。 1. **...

    一个简单的OpenGL多线程渲染模型

    在 Windows 的一个进程内,包含一个或多个线程。线程是指进程的一条执行路径,它是进行 CPU 资源调度的基本单位,它包含独立的堆栈和 CPU 寄存器状态,每个线程共享所有的进程资源,包括打开的文件、信号标识及动态...

    《当析构函数遇到多线程》PPT

    在《当析构函数遇到多线程》这一主题演讲中,陈硕探讨了在多线程环境下管理C++对象生命周期时面临的挑战,尤其是在析构函数执行期间可能出现的问题。这些问题涉及到如何确保对象在析构时不会与其他线程的操作冲突,...

    JAVA多线程的使用场景与注意事项总结

    Java多线程是Java语言中的一种重要机制,允许程序同时执行多个任务,以提高程序的执行效率和响应速度。在Java中,多线程可以通过继承Thread类、实现Runnable接口或使用线程池来创建。在使用多线程时,需要注意线程的...

Global site tag (gtag.js) - Google Analytics