`

多线程操作---线程间通信封装

 
阅读更多
Future是线程与线程间通信的封装
相当于省去了一个公共的共享区static List,以及具有wait和notify通信机制
CompletionService 相当于维护了一组Future

//Future相当于static List 以及wait,notify机制的结合,用于线程间通信
class Renderer{
	private final ExecutorService exector ;
	Renderer(ExecutorService exector ){
		this.exector = exector;
	}
	void renderPage(CharSequence source){
		final List<ImageInfo> imageInfos = scanForImageInfo(source);
		CompletionService<ImageData> completionService=
				new ExecutorCompletionService<ImageData>(executor); //CompletionService维护了一个List<Future>
		for(final ImageInfo imageInfo:info)
			completionService.submit(new Callable<ImageData>() {
				public ImageData call(){
					return imageInfo.downloadImage();
				}
			});
		renderText(source);
		for(int t=0,n=info.size();t<n;t++){
			Future<ImageData> f = completionService.take();//Future避免了在外部再定义一个List,他就可以用于线程之间的通信
			ImageData imageData = f.get();
			renderImage(imageData);
		}
	}
}
分享到:
评论
1 楼 sunjunliangsunjun 2012-06-03  

相关推荐

    操作系统实验-----MFC线程--购票系统演示

    操作系统实验中的“MFC线程--购票系统演示”是一个典型的多线程编程示例,它主要涉及了C++编程语言中的Microsoft Foundation Classes (MFC)库,以及操作系统层面的线程管理和线程同步概念。MFC是微软提供的一套面向...

    线程间通信方式3:消息传递方式

    在多线程编程中,线程间通信是一个关键的概念,用于协调不同线程之间的操作,确保数据的一致性和正确性。本示例“线程间通信方式3:消息传递方式”着重介绍了通过消息传递实现线程间的通信。下面将详细阐述这种通信...

    WHUT-java多线程实验-第二周-异常处理.zip

    2. **线程间的通信(Synchronized、wait()、notify()、notifyAll())**:在同步控制下,确保了共享资源的安全访问。在处理异常时,可能需要释放锁或者调整线程状态,这些通信方法就显得尤为重要。 3. **线程池...

    操作系统中多线程之间通信

    首先,多线程通信(Inter-Thread Communication, ITC)是多线程编程中的关键部分,它涉及到线程间的同步和异步操作。同步是为了确保线程按照预定的顺序执行,防止数据竞争和死锁等问题;异步则允许线程独立执行,...

    c# 委托访问listbox多线程操作

    - **用途**:允许将方法作为参数传递,从而实现回调机制,特别适用于异步操作或线程间通信。 **3. ListBox 控件:** - **功能**:ListBox 是 Windows Forms 中的一种常用控件,用于显示一个选项列表供用户选择。 ...

    vc多线程-mfc-大家可以看看

    在Windows操作系统中,多线程是通过系统内核调度实现的。 在MFC中,多线程的实现主要依赖于`CWinThread`类。`CWinThread`是MFC中的基础线程类,它封装了Windows API的`CreateThread`函数。我们可以通过继承`...

    命名管道双管道跨进程通信多线程封装

    命名管道是Windows操作系统中一种进程间通信(IPC)机制,它允许不同的进程之间进行数据交换。在本案例中,"命名管道双管道跨进程通信多线程封装"着重讲解了如何利用命名管道来实现跨进程的数据传输,并且考虑到了多...

    android 线程间通讯

    在Android系统中,线程间通信(Inter-Thread Communication,简称ITC)是应用程序开发中的重要环节,尤其在处理耗时操作或者优化UI性能时显得至关重要。线程间通信允许不同线程之间交换数据和执行任务,以确保主线程...

    C++封装类CWSocket(多线程 非阻塞)

    总的来说,C++封装类CWSocket的实现结合了多线程、非阻塞I/O和超时处理等关键技术,旨在提供一个高效、灵活且易于使用的网络通信组件。对于开发需要处理大量并发网络连接的系统,如服务器端应用,这样的封装类具有很...

    利用MFC进行多线程编程

    - 在MFC中,线程间通信可以通过消息队列、全局变量、共享内存、事件对象等方式实现。文档中提到的"VC中利用多线程实现线程之间的通信.doc"应该详细介绍了这些方法。 - 使用PostMessage()或SendMessage()函数可以在...

    基于MFC开发的多线程串口通信上位机

    总结来说,基于MFC的多线程串口通信上位机项目,利用了C++和MFC的特性,结合Windows API进行串口操作,并通过多线程技术提高了通信效率和用户体验。在实际应用中,这样的上位机可以广泛应用于工业自动化、远程监控等...

    MFC下的线程树-beta

    5. **线程通信**:线程间通信是实现线程树结构的关键。MFC提供了线程间消息发送、事件通知(如CEvent)和异步消息机制(如AFX_PMSG)等方式来实现线程间的交互。 6. **示例代码**:在提供的"ThreadTreeDLL"文件中,...

    Delphi API 串口通信 多线程例子.rar

    在"Delphi API 串口通信 多线程例子.rar"这个压缩包中,可能包含了一个示例项目,展示了如何使用Delphi的API和多线程技术实现串口通信。文件名"codefans.net"可能指的是一个代码分享网站,或者是一个特定的源代码...

    swift-iOS多线程详细Demo

    - 在多线程操作中,NSProgress可以用于显示任务进度,特别是在网络下载、上传等场景。 - 支持取消和监控子任务进度,提供了一套完整的进度跟踪机制。 综上所述,"swift-iOS多线程详细Demo" 包含了Swift中多线程的...

    .NET多线程实例

    "命名空间"在多线程编程中起到组织和封装代码的作用,确保不同线程间的代码不发生冲突。正确地使用命名空间能提高代码的可读性和可维护性。 "多态和类的继承"在多线程环境下,可以实现更灵活的代码设计。子类可以...

    线程间通信方式2:参数传递方式

    使用`CreateThread`、`\_beginthread`等函数时,正确地封装和传递参数是实现线程间通信的关键步骤。在实际项目中,结合具体的业务需求,选择合适的同步机制来保证数据一致性,是保证程序稳定性的基石。

    MFC多线程的创建,包括工作线程和用户界面线程

    在多线程环境中,线程间通信非常重要。MFC提供了 `PostThreadMessage` 函数来发送线程消息,其原型如下: ```cpp BOOL PostThreadMessage( UINT message, WPARAM wParam, LPARAM lParam ); ``` 通过这种方式,...

    MultiThread(VS2013 MFC多线程-含源码-含个人逐步实现文档)

    4. `CEvent` 和 `CSemaphore`:这些是MFC中的同步对象,用于线程间的通信和同步,防止数据竞争和死锁。 在"个人实践版本-(含源代码)VS2013-MFC多线程控制进度条.doc"文档中,很可能是介绍如何在多线程环境中更新GUI...

    MFC-TCP.rar_TCP通信_TCP通信MFC_mfc tcp 多线程_mfc tcp通信_mfc 多线程

    总的来说,MFC-TCP.rar是一个关于使用MFC进行TCP通信的实例,涵盖了多线程服务器设计、客户端连接处理、异步I/O操作以及线程间通信等多个关键点。对于想要深入理解和实践MFC和TCP通信的开发者来说,这是一个非常有...

    大漠多线程模板_大漠_大漠多线程_

    7. **线程间通信**:`WaitHandle`类(如`AutoResetEvent`、`ManualResetEvent`)和其他同步构造物允许线程间进行通信。模板可能提供了简化这些通信的接口。 8. **并发集合**:C#提供了线程安全的集合,如`...

Global site tag (gtag.js) - Google Analytics