`
stefli
  • 浏览: 2547 次
  • 性别: Icon_minigender_1
  • 来自: 成都
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

关于一个读数据到buffer,另外线程从buffer中提取数据的问题

阅读更多
现在要设计个简单的java应用程序,其主要工作就是
1、从目标数据库(Oracle)中获取最后的一条数据的ID,赋给MaxID
2、根据1的ID,从其他数据库(如MsSQL、MySQL)提取大于该ID的数据。不同数据库,数据结构不同。
3、将获取的数据写入Buffer中
4、另外的一只线程负责从Buffer中提取数据,提取后先设置MaxID为当前ID,然后将数据写如1中的Oracle,同时从Buffer中删除该条记录

图形结构如下:
      |---------------------------------------------------|
读取当前ID值=》读取大于该ID的10条数据=》写入Buffer            |
                                        |                |
                                    从Buffer中读取值=》设置ID值=》写入目标数据库

过程中保证数据的准确性

我该怎么去设计他们之间的关系,以及采用什么设计模式比较好,便于扩展
分享到:
评论
3 楼 likeblood 2007-06-05  
这个一定要使用某个设计模式么?我觉得和模式无关的问题,而是用什么方法解决问题
2 楼 weiqingfei 2007-06-05  
这好像是管道应该做得事情。
1 楼 cnhzliye 2007-06-05  
消费者和生产者

相关推荐

    python 使用多线程创建一个Buffer缓存器的实现思路

    定义一个Buffer类,再其构造函数中创建一个buffer空间(这里最好使用list类型) 我们还需要的定义线程锁LOCK(数据传输和提取的时候会用到) 因为需要两种方法(读数据和取数据),所以我们需要定义两个锁 实现的...

    2017年计算机二级考试java章节辅导:多线程之间的通讯 .docx

    生产者和消费者模型是一种设计模式,它描述了两个或多个线程如何协同工作,一个线程(生产者)生成数据,另一个线程(消费者)消耗这些数据。在这个例子中,生产者是`Producer`类,消费者是`Consumer`类。它们共享...

    c++实现生产者消费者问题

    消费者线程负责消费数据,并从缓冲区中提取数据。在这个过程中,使用互斥量来控制线程之间的访问顺序,避免数据混乱和不一致。 C++ 中的生产者消费者问题可以通过使用 Windows 提供的 API Funktionen 和同步机制来...

    ZwQuerySystemInformation枚举进程线程的软件源码

    5. **解析信息**:遍历内存中的信息,提取出每个进程和线程的详细数据。 6. **展示结果**:将提取到的信息显示出来。 #### 七、关键代码片段解读 ```vb Private Declare Function ZwQuerySystemInformation Lib ...

    MFC串口接收数据并实时显示

    要实现“从串口收发数据”,我们首先需要创建一个`CSerialPort`对象,并用适当的参数初始化它,例如: ```cpp CSerialPort serialPort; if (!serialPort.Create("COM1", CBR_9600, 8, 1, NULL)) { // 错误处理,...

    基于java的从压缩包中提取文件.zip

    以下是一个基本的步骤来从ZIP文件中提取文件: 1. **打开输入流**:首先,你需要创建一个`FileInputStream`对象,以读取ZIP文件。然后,使用这个输入流创建一个`ZipInputStream`对象。 ```java FileInputStream ...

    (部分代码)利用信号量技术处理生产者-消费者的任务+提取布朗语料库词汇使用

    在这个场景中,我们关注的是在操作系统层面上如何解决一个经典的问题——生产者-消费者问题,以及如何使用布朗语料库来处理文本数据。我们将深入探讨这两个知识点。 首先,让我们来看看生产者-消费者问题。这是一个...

    JavaNIO.pdf

    而NIO在非阻塞模式下运行,通过使用Buffer和Selector,一个线程可以同时监视多个输入通道,若无数据可读或写时,该线程可以进行其他任务。非阻塞I/O适合处理大量的并发连接。 知识点五:字符集(Charset) Java NIO...

    java nio 包读取超大数据文件

    - 创建一个固定大小的字节数组`byte[] dst = new byte[BUFFER_SIZE];`用于临时存储读取的数据。 - 通过循环遍历内存映射缓冲区中的数据: - 计算偏移量`offset`,并根据偏移量读取数据到`dst`数组中。 - 根据...

    Java网络编程(5).pdf

    3. Channel(通道):Channel是一个通道,数据可以从Buffer读取到Channel,也可以从Channel写入Buffer。在NIO中,Channel的主要实现类有ServerSocketChannel、SocketChannel、DatagramChannel等,它们分别对应于传统...

    基于Java的实例源码-从压缩包中提取文件.zip

    在Java编程语言中,处理压缩文件,如ZIP格式,是一项常见的...以上就是Java中从ZIP文件中提取文件的核心知识点,希望对你理解这一主题有所帮助。在实际开发中,可以根据具体需求进行调整和扩展,以满足更复杂的需求。

    基于Java的从压缩包中提取文件.zip

    以下是一个简单的Java代码示例,演示了如何从ZIP文件中提取所有文件: ```java import java.io.*; import java.util.zip.*; public class UnzipExample { public static void main(String[] args) { try { // ...

    Arcgis engine GPS数据连接查询源代码

    对于GPS数据的处理,Engine通常会使用`Geoprocessing`工具包,这是Esri提供的一个核心功能,用于执行空间运算和数据转换。 在"GPS数据连接查询"过程中,源代码会涉及以下几个关键步骤: 1. **数据连接**:首先,你...

    如何构造一个C#语言的爬虫程序

    ### 如何构造一个C#语言的爬虫程序 在当今数据驱动的世界里,网络爬虫是一种重要的工具,用于自动收集互联网上的数据。本篇内容详细介绍了如何使用C#语言构建一个基本的网络爬虫程序,并重点讲解了其中的关键技术点...

    金盾2019加密视频提取脚本

    闲得无聊,尝试用纯OD脚本做一个金盾2019的提取 详细分析不多介绍 008AD04D . E8 8299B5FF call 金盾19播.004069D4 008AD052 . 8BC7 mov eax,edi 008AD054 . 99 cdq 008AD055 . 034424 08 add eax,dword ptr ...

    Linux环境下Gtk的使用小程序,多线程小程序,内核编译方法实例程序,字符设备程序,类似windows的进程管理器程序综合说明书

    - **实验内容**:设计一个多线程程序,包括主程序和子程序,并演示多线程间的交互。 - **模块化设计** - 主程序负责创建线程、初始化线程所需资源。 - 子程序执行具体任务。 - **流程图** - **主程序**:创建线程...

    生产者与消费者 进程的同步与互斥模拟

    ② 调度程序从就绪队列中提取一个就绪进程运行。如果申请的资源被阻塞则进入相应的等待队列,调度程序调度就绪队列中的下一个进程。进程运行结束时,会检查对应的等待队列,激活队列中的进程进入就绪队列。运行结束...

    通用FIFO环形缓冲区实现的开源库.zip

    环形缓冲区的设计理念是利用一个固定大小的内存空间,当数据写入时,从一端开始填充,达到末尾后又返回到起始位置继续写入,形成一个循环。这种设计使得读取和写入操作可以并发进行,且不需要移动数据,提高了效率。...

    h264 环形缓冲队列 编解码

    1. NAL单元解析:从原始的H264流中识别并提取出各个NAL单元,每个NAL单元包含一个或多个RASL(Random Access Slice Layer)序列。 2. SPS与PPS解析:这些参数集包含了编码视频的全局信息,如画面尺寸、帧率、编码...

    MySQL_OCP5.7带讲解.pdf

    从提供的文件内容中可以提取出关于MySQL数据库备份、配置和关键buffer的知识点。 知识点一:MySQL复制与备份的配置 在MySQL中,实现复制和备份是常见的运维任务。题目中提到了使用mysqldump工具来搭建复制的从...

Global site tag (gtag.js) - Google Analytics