Я пытаюсь научиться использовать потоки в Java. В настоящее время я застрял в одном упражнении, где у меня есть три потока A, B и C, каждый с локальным массивом. Я хочу, чтобы три потока обменивались данными друг с другом, чтобы они могли найти минимально возможное число, которое взаимно (пересекается) со всеми локальными массивами. Если есть такой номер, я хочу, чтобы нить B напечатала его и закрыла другие потоки, если такого номера нет, я намерен закрыть программу. Каким может быть возможное решение? Как передать информацию между потоками в этом сценарии? Вот мой код до сих пор:Связь потоков в Java
import java.util.Random;
import java.util.Arrays;
public class MyThread implements Runnable {
private Thread thrd;
private Random randomInteger;
private int[] localArray;
MyThread(String name, int sizeOfLocalArray) {
localArray = new int[sizeOfLocalArray];
randomInteger = new Random();
for (int i = 0; i < localArray.length; i++) {
localArray[i] = randomInteger.nextInt();
}
Arrays.sort(localArray);
thrd = new Thread(this, name);
thrd.start();
}
@Override
public void run() {
System.out.println(thrd.getName() + " starting");
for (int number : localArray) {
System.out.println(number + ", ");
}
System.out.println();
System.out.println(thrd.getName() + " terminating");
}
}
public class Main {
public static void main(String[] args) {
MyThread myThread = new MyThread("threadF", 5);
}
}
Ну, потоки являются объектами и могут взаимодействовать друг с другом так же, как другие объекты. Я предлагаю сначала решить его без потоков: всего три обычных класса с локальными массивами. – lbalazscs
Можете ли вы показать больше своей работы? Например, я вижу только один поток в вышеупомянутом приложении. Как запущены несколько потоков? Как они разделяют 'localArray'? – Gray
Я понятия не имею, как его решить. Я много раз пробовал. Я сделал это без потоков, но я не вижу, как это можно применить к потокам. Как найти наименьшее число, общее для всех трех локальных таблиц, каждое из которых отличается от трех потоков. Спасибо за ответы. Я читал их все. Но любая дальнейшая помощь была бы велика. Как решить проблему? – Agness