Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.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
Google cloud dataflow 云数据流中SerializableFunction的线程安全_Google Cloud Dataflow - Fatal编程技术网

Google cloud dataflow 云数据流中SerializableFunction的线程安全

Google cloud dataflow 云数据流中SerializableFunction的线程安全,google-cloud-dataflow,Google Cloud Dataflow,我正在实现SerializableFunction接口,我想重用我在构造函数中创建的一些昂贵的助手对象。在数据流作业中使用此类时,是否为使用该类的每个线程创建/克隆了一个新实例 谢谢, 简答 SerializableFunction不需要是线程安全的,因为每个线程都有自己的反序列化实例。它在共享范围内访问的任何引用(例如,通过静态方法/静态引用/…)都需要是线程安全的 长话短说 SerializableFunction使用Java的对象序列化机制进行序列化,并保存为数据流规范的一部分。根据规范及

我正在实现SerializableFunction接口,我想重用我在构造函数中创建的一些昂贵的助手对象。在数据流作业中使用此类时,是否为使用该类的每个线程创建/克隆了一个新实例

谢谢, 简答
SerializableFunction不需要是线程安全的,因为每个线程都有自己的反序列化实例。它在共享范围内访问的任何引用(例如,通过静态方法/静态引用/…)都需要是线程安全的

长话短说
SerializableFunction使用Java的对象序列化机制进行序列化,并保存为数据流规范的一部分。根据规范及其优化方式,SerializableFunction很可能被分解为多个工作单元。然后,每个工作机器可以请求1个或多个并行处理的工作单元。每个工作单元将使用Java的对象序列化机制来重新创建SerializableFunction的实例。每个线程仅分配给一个工作单元。请注意,即使每个工作单元分配给一个线程,如果昂贵的助手对象不是SerializableFunction的一部分,而是通过另一个方法(例如通过静态引用/方法)访问,然后,昂贵的助手对象仍可能在工作者上相同SerializableFunction的多个实例之间共享