【问题标题】:passing values from a class to another callable class将值从一个类传递到另一个可调用类
【发布时间】:2013-09-25 00:10:12
【问题描述】:

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

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 对象。如何实现?请说明我的问题是否需要重新表述,因为我对线程非常陌生。

【问题讨论】:

  • 你不能为WDoc doc字段添加一个getter吗?

标签: java multithreading callable


【解决方案1】:

您可以为此 WDOC 使用 Exchanger 创建 getter 和 Setter,不要忘记将 WDOC 设为 final。

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

如果您只为 read 使用了 WDOC。你可以只使用 getter 和 final 字段

【讨论】:

    猜你喜欢
    • 2011-08-26
    • 1970-01-01
    • 1970-01-01
    • 2013-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多