Мне нужно объяснить функцию Join, вычисляя параллельно это уравнение D = (a-b) + (c-d). Предположим, что у меня есть уравнение D = (a-b) + (c-d). Как я могу сделать это уравнение параллельно, используя три потока для вычисления (a-b), один для вычисления (c-d) и основного потока, чтобы показать результат. Мне нужно показать, что главное не показывает результат до того, как два потока мертвы.Параллельное суммирование с многопоточной java
0
A
ответ
1
Как говорит Джавадок, join()
ждет вас ntil заданный поток умирает, следовательно, это оператор, который блокирует до тех пор, пока поток не завершит вычисление. Использование уравнения:
// Choose a, b, c, and d.
int a = 0;
int b = 1;
int c = 2;
int d = 3;
// Set up an array for the intermediate results.
int[] results = new int[2];
// Create two threads writing the intermediate results.
Thread t0 = new Thread(() -> results[0] = a - b);
Thread t1 = new Thread(() -> results[1] = c - d);
// Start both threads.
t0.start();
t1.start();
// Let the main thread wait until both threads are dead.
try {
t0.join();
t1.join();
} catch (InterruptedException e) { /* NOP */ }
// Sum up the intermediate results and print it.
System.out.println(results[0] + results[1]);
Используя простой массив для получения результатов из нити немного тусклый (проверить this question). Однако этого примера достаточно.
1
Я создаю две темы, они парализованы:
Они t1 иt2;
- Здесь t1 вычисления (аb)
- t2 вычисляет (кд)
Здесь основной() вычислить общую сумму:
этот код может помочь вам:
class SumThread extends Thread implements Runnable {
public SumThread(int a, int b) {
this.a = a;
this.b = b;
sum = 0;
}
public void run() {
sum=(a-b);
}
public int getSum() {
return sum;
}
private int a, b, sum;
}
public class Sum2 {
public static void main(String args[]) {
SumThread t1 = new SumThread(1, 2);
SumThread t2 = new SumThread(3, 4);
t1.start();
t2.start();
try {
t1.join();
t2.join();
} catch(InterruptedException e) {
System.out.println("Interrupted");
}
System.out.printf("The sum %d \n", t1.getSum()+t2.getSum());
}
}
Смежные вопросы
- 1. параллельное суммирование массивов с openmp в C++
- 2. Параллельное суммирование матриц (или растров) в R
- 3. Параллельное суммирование данных OpenCL в переменную
- 4. многопоточной Java
- 5. Java многопоточной масштабируемости проблема
- 6. Проблема многопоточной синхронизации Java?
- 7. Понимание java многопоточной синхронизации
- 8. Параллельное программирование. compute(), java
- 9. Производитель потребительских многопоточной Java
- 10. Параллельное управление в Java
- 11. Java многопоточной объем Thread.sleep
- 12. Java многопоточной ошибка `java.lang.IllegalMonitorStateException`
- 13. JAVA - Параллельное и замки
- 14. Java - Параллельное Модификация Исключение
- 15. параллельное программирование в java
- 16. Параллельное программирование на Java
- 17. Параллельное Java пример Go
- 18. Параллельное программирование на Java
- 19. Java - Список массив Суммирование
- 20. с многопоточной
- 21. Java - url.openStream не может работать с многопоточной
- 22. Обработка данных с использованием многопоточной java
- 23. Connection Pool висит с многопоточной программой java
- 24. Java Параллельное программирование Предложение производительности
- 25. Параллельное сито Eratosthenes - Java Многопоточность
- 26. Параллельное выполнение алгоритма в Java
- 27. Обработка потоков Java, параллельное программирование
- 28. Заявление Java Await - параллельное программирование
- 29. Java-параллельное программирование - синхронизирующий массив
- 30. Elasticsearch Java API в многопоточной программе Java
Создание трех объектов подкласса и метода run() вызова может работать @BetterEnglish –