diff --git a/src/main/java/azgracompress/io/loader/IPlaneLoader.java b/src/main/java/azgracompress/io/loader/IPlaneLoader.java index 0ed068f71e40ddc1e97c9676c6b95ad501f873cd..7e20bac003cf6680bbe604457a6ca22a1cfebe2a 100644 --- a/src/main/java/azgracompress/io/loader/IPlaneLoader.java +++ b/src/main/java/azgracompress/io/loader/IPlaneLoader.java @@ -10,6 +10,16 @@ import java.io.IOException; * Interface for dataset loaders. */ public interface IPlaneLoader { + + /** + * Check whether current loader supports threading. + * + * @return True if current loader can use more threads for loading. + */ + default boolean supportParallelLoading() { + return false; + } + /** * Get dimensions of the image, for which the loader was created. * diff --git a/src/main/java/azgracompress/io/loader/ImageJBufferLoader.java b/src/main/java/azgracompress/io/loader/ImageJBufferLoader.java index 154415119489b3c97a6f3507e1e1e5f81a1d40f7..c43bcfcdf80d35046e8ed3422190767d5280bb86 100644 --- a/src/main/java/azgracompress/io/loader/ImageJBufferLoader.java +++ b/src/main/java/azgracompress/io/loader/ImageJBufferLoader.java @@ -20,6 +20,11 @@ public final class ImageJBufferLoader extends BasicLoader implements IPlaneLoade assert (this.bufferInputData.getPixelType() == InputData.PixelType.Gray16); } + @Override + public boolean supportParallelLoading() { + return true; + } + private void copyShortArrayIntoBuffer(short[] srcArray, int[] destBuffer, int destOffset, int copyLen) { for (int i = 0; i < copyLen; i++) { destBuffer[destOffset + i] = TypeConverter.shortToInt(srcArray[i]);