public interface MultiDoc
多文档界面提供了一个抽象的概念,类似于“链表”的文件。一个多文档对象就像是在链表的节点,包含列表中的当前文件和一个指针指向下一个节点(多文档)列表中。打印作业可称为多文档的getDoc()
方法获取当前文档。当它准备去到下一个文档,打印作业可称为多文档的next()
方法得到下一个多文档,其中包含下一个文件。所以打印作业的代码访问一个多文档可能看起来像这样:
无效processmultidoc(多文档themultidoc){多文档themultidoc电流=;同时(电流!=零)processdoc(电流。getdoc());next()电流=电流;}}
当然,多文档界面可以以任何方式履行合同的实施;它没有在实施使用链表。
为了得到一个多文档的打印作业的打印数据,打印服务代理可以使用两模式:
为了解决这个问题,并简化了打印作业提供多文档的客户设计,每一个打印服务代理,支持多文档的打印作业需要访问一个多文档对象使用交错模式。即,给定一个多文档对象,打印服务代理将调用getDoc()
一次或多次,直到它成功地获得当前文档对象。打印服务代理将获得当前文档的打印数据,不进行直到所有的打印数据的获得或不可恢复的错误发生。如果它能够继续,打印服务代理将调用next()
一次或多次,直到它成功获得下一多文档对象或一个指示,没有更多的。多文档界面的实现能承担打印服务代理将遵循这一交错的模式;其他模式的使用,实现了多文档的行为是未定义的。
在客户端线程可以同时访问同一个多文档的数量没有限制。因此,所有的多文档界面的实现必须设计成多线程安全。事实上,一个客户端线程可以添加文件到列表(概念)而打印的工作线程同时获取文件从列表的开始;提供多文档对象的线程同步好,两个线程不会互相干扰
Doc getDoc() throws IOException
IOException
如果阅读文档时发生错误。
MultiDoc next() throws IOException
IOException
如果发生错误的文件扔下定位
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.