0

我有一个带有以下代码的课程,

public class DocTransformer implements Callable<IndexableDocument> {

    WDoc document;
    public DocTransformer(Map<INDEXFIELD, Tokenizer> tknizerMap, WDoc doc) {
        this.document = doc;
    }

    public IndexableDocument call() throws TokenizerException {
        System.out.println("Inside doctrans: "+this.document.getId());

    }

}

IndexableDocument 如下所示,

public class IndexableDocument {

    WDoc doc;
    public IndexableDocument() {
        System.out.println("this is inside indexable document");
    }

    public void addField(INDEXFIELD field, TStream stream) {
        //TODO: Implement this method
    }

    public TokenStream getStream(INDEXFIELD key) {
        //TODO: Implement this method
        return null;
    }

    public String getDocumentIdentifier() {
        System.out.println(doc.getId);
    }

}

运行器类调用 DocTransformer。我可以访问 DocTransformer 内部的 WDoc,因为它是从运行器类调用的,并且对象从它传递给 DocTransformer。但我需要访问 IndexableDocument 中的 WDoc 对象。如何实现?请解释我的问题是否需要改写,因为我对线程很陌生。

4

1 回答 1

0

您可以为此 WDOC 使用Exchanger创建 getter 和 Setter ,并且不要忘记将 WDOC 设为最终版本。

Exchanger<WDoc> exchanger = new Exchanger<WDoc>(); \\do it inside some Cover Thread(mb your main class)
currentWdoc = exchanger.exchange(doc); \\ inside getter

如果您只为读取而使用 WDOC。你可以只使用 getter 和 final 字段

于 2013-10-23T12:38:46.740 回答