Мой компьютер имеет 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();
Оба запускаются (кажется), но когда он запускается, я вижу (print stmts), что первая подготовка должназакончите (напечатайте stmts внутри) до начала второго.И загрузка процессора такая же, как и раньше, около 30%.Они оба, конечно, получают данные из одного и того же источника, DefaultTableModel.
Есть идеи, как это сделать или что я делаю неправильно?спасибо.