Разница между многопоточным и параллельным программированием?

У меня четырехъядерный процессор. Я написал в java что-то вроде этого;

Some.java;

public class Some extends Thread {
    private SharedData sharedVal;
    private String name;

    public Some(SharedData val, String threadName) {
        sharedVal = val;
        name = threadName;
    }

    public void run() {
        int temp;
        while(true) {
            temp = sharedVal.GetValue() + 1;
            sharedVal.SetValue(temp);
        }
    }
}

SharedData.java;

public class SharedData {
    private int value;

    SharedData() {
        value = 0;
    }

    public void SetValue(int d) {
        value = d;
    }

    public int GetValue() {
        return value;
    }
}

Program.java;

public class Program {
    public static void main(String[] args) {
        SharedData test = new SharedData();

        Some t1 = new Some(test, "thread1");
        Some t2 = new Some(test, "thread2");
        Some t3 = new Some(test, "thread3");
        Some t4 = new Some(test, "thread4");

        t1.start();
        t2.start();
        t3.start();
        t4.start();
    }
}

Я запускаю программу и проверяю графики процессора, каждая часть процессора выглядит рабочей примерно на %90.

Мой вопрос в том, что если я могу использовать системные ресурсы таким образом, то что такое параллельное программирование? Я что-то не так понимаю? Я видел пример на c# с использованием подсчета процессоров, что с этим делать?

14
задан FrankerZ 2 November 2018 в 03:16
поделиться