Экземпляры 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.
Любые идеи о том, как это сделать или что я делаю не так? Благодарю.