Ребята, я не знаю, как решить эту проблему с потоками. Я прочитал много источников, но не могу найти ничего полезного
Создайте многопоточную программу, которая считывает целочисленное значение n от пользователя (вы можете принять любую константу) и находит сумму чисел от 1 до n, используя 4 новых потока, где каждый поток вычисляет только ¼ суммы. Основная нить выводит окончательную сумму.
Что я уже пробовал:
import java.util.Scanner; class sum implements Runnable { double a, b; public sum(double a, double b) { this.a = a; this.b = b; } public void run() { add(a, b); } public void add(double a, double b) { double sum = 0; synchronized (this) { for (double i = a; i <= b; i++) { sum = sum + i; } System.out.println("Sum of " + a + " to " + b + " numbers = " + (double) sum); } } } public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); Thread t1 = new Thread(new sum((double) 1, (double) n / 4)); Thread t2 = new Thread(new sum((double) (n / 4) + 1, (double) n / 2)); Thread t3 = new Thread(new sum((double) (n / 2) + 1, (double) n * 3 / 4)); Thread t4 = new Thread(new sum((double) (n * 3 / 4) + 1, (double) n)); Thread main = new Thread(new sum((double) 1, (double) n)); t1.start(); t2.start(); t3.start(); t4.start(); main.start(); try { t1.join(); t2.join(); t3.join(); t4.join(); main.join(); } catch (InterruptedException e) { e.printStackTrace(); } } }
ZurdoDev
Есть много, очень много статей о том, как делать потоки в C# или C. Я не уверен, что вы искали, но их очень легко найти.
Если это действительно так-С, это первый результат в Google для меня, https://www.geeksforgeeks.org/multithreading-c-2/
KarstenK
У вас есть некоторый недостаток приведения типа в вычислении ваших конструкторов сумм, потому что вы делите целое число и приводите результат.
Я настоятельно рекомендую, чтобы ваш n был двойным!!!