Как обеспечить работу потоков Java на разных ядрах

Я пишу многопоточное приложение на Java для повышения производительности по сравнению с последовательной версией. Это параллельная версия решения динамического программирования для задачи о ранце 0/1. У меня Intel Core 2 Duo с Ubuntu и Windows 7 Professional на разных разделах. Я бегу в Ubuntu.

Моя проблема в том, что параллельная версия на самом деле занимает больше времени, чем последовательная версия. Я думаю, что это может быть связано с тем, что все потоки отображаются в один и тот же поток ядра или что они распределены одному и тому же ядру. Есть ли способ, которым я мог бы гарантировать, что каждый поток Java отображается на отдельное ядро?

Я читал другие посты об этой проблеме, но, похоже, ничего не помогает.

Здесь конец main () и все run () для класса KnapsackThread (который расширяет Thread). Обратите внимание, что они, как я использую slice и extra для вычисления myLowBound, и myHiBound гарантируют, что каждый поток не будет перекрываться в домене dynProgMatrix. Поэтому не будет гоночных условий.

    dynProgMatrix = new int[totalItems+1][capacity+1];
    for (int w = 0; w

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

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