Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将值从一个类传递到另一个可调用类_Java_Multithreading_Callable - Fatal编程技术网

Java 将值从一个类传递到另一个可调用类

Java 将值从一个类传递到另一个可调用类,java,multithreading,callable,Java,Multithreading,Callable,我有一个具有以下代码的类 public class DocTransformer implements Callable<IndexableDocument> { WDoc document; public DocTransformer(Map<INDEXFIELD, Tokenizer> tknizerMap, WDoc doc) { this.document = doc; } public IndexableDoc

我有一个具有以下代码的类

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());

    }

}

runner类调用DocTransformer。我可以访问DoctTransformer内部的WDoc,因为它是从runner类调用的,并且对象是从它传递到DoctTransformer的。但是我需要访问IndexableDocument中的WDoc对象。如何实现?请解释我的问题是否需要重新表述,因为我对线程非常陌生。

您可以为此WDOC创建一个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
交换器=新交换器()\\在一些封面线程内执行(mb您的主类)
currentWdoc=exchanger.exchange(doc);\ \内吸气剂

如果您只需要读取WDOC。您可以只使用getter和final字段

您不能只为
WDoc doc
字段添加一个getter吗?
Exchanger<WDoc> exchanger = new Exchanger<WDoc>(); \\do it inside some Cover Thread(mb your main class)
currentWdoc = exchanger.exchange(doc); \\ inside getter