生产-消费情势的XML解析[Java编程]
本文“生产-消费情势的XML解析[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
在B2B(企业对企业)利用中XML扮演一个重要的角色.在这些利用中采取Simple API for XML (SAX)大概document.nbspObject Model (DOM)解析器来解析xml文件.(这两个解析器都是java的api,他们可以在下面的附录中找到)在一个单线程利用中解析是简单明了的.但是,在多线程的利用中这就是很复杂和具有挑衅性了,比方说做一个利用服务器,因为利用常常会为解析xml成立一个专门的线程,解析的数据用来为很多同时并发运行的线程服务.这篇文章描写了一个在并发利用中的xml的解析实现.
计划办法
基于并发的生产和消费计划概念,一个专门的线程作为一个生产者去解析xml.一组线程作为消费者,作为解析xml数据的生产线程,他把数据存储在一个同享的数据构造中以供消费线程在将来举行处理时获得,为了最大化产生数据的本领同时最小化内存的利用,这个计划利用了一个分外的行列来辨别为生产者、消费者存储和找到解析的数据.
巧妙的行列(Smart Queuing)
SmartQueue 行列类供应应生产消费线程们行列的功效,他主要的责任是保护行列避免(线程)超载和断流.换句话说,SmartQueue采取保护一个固定长度的行列的办法去保持资源的利用效率.他挂起和唤醒得当的线程在得当的时刻,打个比方,假如没有填充数据的空间,行列将挂起生产线程直到一个消费线程从行列里移去一项.
下面的SmartQueue 代码片断展示了这种战略的实现.
public synchronized void put(Object data) {
// check to see if the length is 2
while (list.size() >= 2) {
try {
System.out.println("Waiting to put data");
wait();
}
catch (Exception ex) {
}
}
list.add(data);
notifyAll();
}
public synchronized Object take() {
// wait until there is data to get
// come out if the end of file signaled
while (list.size() <= 0 && (eof != true)) {
try {
System.out.println("Waiting to consume data");
wait();
} catch (Exception ex) {
}
}
Object obj = null;
if (list.size() > 0) {
obj = list.remove(0);
} else {
System.out.println("Woke up because end of document.quot;);
}
notifyAll();
return obj;
}
以上是“生产-消费情势的XML解析[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |