如何使用java将线程实例保存在数据库中



这是SAP PI要求,

  • 源系统:XY_Client
  • 中间件:PI系统
  • 目标系统:SAP

XML文件被接收到PI系统,对于每个XML文件,生成一个内部文件来跟踪store_number和XML文件的计数。

工作原理:假设XML_FILE_1达到PI,则会创建名为sequence_gen的内部文件。该文件包含XML文件中存在的商店编号,计数将初始化为1。

  • 所以第一次
  • sequence_gen file contains Store: 1001 Count:1
  • (经过一段时间后)
  • 如果XML_
  • sequence_gen file contains Store: 1001 Count:2
  • 等等

我的问题是:如果"n"个文件同时到达PI系统,第一个文件将锁定sequence_gen文件。那么第二个文件将如何更新sequence_gen文件的值呢?那么如何解决这个问题呢?

我想为每个调用创建一个线程实例,并将其存储在数据库中。检索每个实例,执行函数,将结果返回到xml调用并删除该实例。。有可能吗?如何推进这项工作?

与其跟踪锁定和解锁文件的所有线程,不如由一个线程负责更改文件。让每个线程将更改文件的请求放入并发队列,然后并发队列通知Sequence_Gen线程写入自己的文件。本质上:

Sequence_Gen线程:

@Override
public synchronized void Run(){
    while(true){ //Some condition
        while(queue.isEmpty()) { 
            this.wait();
        }
        Object obj = queue.pop();
        //Open file
        file.write(obj);
        //Close file
    }
}

然后,在任何其他线程中,只需排队并通知有东西要写。

public synchronized void AddItem(Object item) {
    queue.put(item);
    this.notifyAll();
}

相关内容

  • 没有找到相关文章

最新更新