Refactor: Replace LinkedBlockingQueue with ArrayBlockingQueue for improved performance

This commit is contained in:
extio-de
2025-10-11 11:18:44 +02:00
parent cd9187cd5f
commit dbf8266a45

View File

@@ -7,11 +7,11 @@ import java.nio.file.InvalidPathException;
import java.nio.file.NoSuchFileException; import java.nio.file.NoSuchFileException;
import java.nio.file.Path; import java.nio.file.Path;
import java.util.Arrays; import java.util.Arrays;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue; import java.util.concurrent.BlockingQueue;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
import java.util.concurrent.Future; import java.util.concurrent.Future;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.function.Consumer; import java.util.function.Consumer;
import de.extio.checkdataintegrity.BufferPool.Buffer; import de.extio.checkdataintegrity.BufferPool.Buffer;
@@ -41,8 +41,8 @@ class Task implements Consumer<Path> {
final Path p1 = Path.of(this.args.path1() + rel); final Path p1 = Path.of(this.args.path1() + rel);
try (RandomAccessFile raf0 = new RandomAccessFile(path.toFile(), "r"); RandomAccessFile raf1 = new RandomAccessFile(p1.toFile(), "r")) { try (RandomAccessFile raf0 = new RandomAccessFile(path.toFile(), "r"); RandomAccessFile raf1 = new RandomAccessFile(p1.toFile(), "r")) {
final BlockingQueue<Buffer> queue0 = new LinkedBlockingQueue<>(1); final BlockingQueue<Buffer> queue0 = new ArrayBlockingQueue<>(1);
final BlockingQueue<Buffer> queue1 = new LinkedBlockingQueue<>(1); final BlockingQueue<Buffer> queue1 = new ArrayBlockingQueue<>(1);
final Future<?> future0 = this.executorService.submit(() -> this.loader(raf0, queue0)); final Future<?> future0 = this.executorService.submit(() -> this.loader(raf0, queue0));
final Future<?> future1 = this.executorService.submit(() -> this.loader(raf1, queue1)); final Future<?> future1 = this.executorService.submit(() -> this.loader(raf1, queue1));
try { try {