Экземпляры Swingworker не работают одновременно

Мой компьютер имеет 4 ядра, и я использую программу Java Swing Gui. Когда я запускаю свое приложение, оно использует только два ядра и около 30% загрузки процессора. У меня есть большое количество файлов для обработки, и я хочу разделить их на два потока, чтобы выполнить эту задачу быстрее, используя больше процессоров.

У меня есть класс SwingWorker с именем PrepareTask, который имеет конструктор с двумя целыми числами:

class PrepareTask extends SwingWorker<Void, Void> {
  int start, end;
  PrepareTask (int start, int end) { ... }
  ...
    public Void doInBackground() {... }
    public void done() { ... }

Я создаю два экземпляра этого как:

  PrepareTask prepareTask = new PrepareTask(0,numberOfFiles/2);
  prepareTask.execute();
  PrepareTask prepareTask2 = new PrepareTask(numberOfFiles/2, numberOfFiles);
  prepareTask2.execute();

Оба запускаются (кажется), но когда он запускается, я вижу (печать stmts), что первая подготовка должна закончиться (печать stmts внутри), прежде чем начнется вторая. И загрузка процессора такая же, как и раньше, около 30%. Они оба, конечно, получают данные из одного источника, DefaultTableModel.

Любые идеи о том, как это сделать или что я делаю не так? Благодарю.

Ответы на вопрос(2)

Ваш ответ на вопрос