Назад к вопросам
СБЕР
Senior
4
Приходилось ли на практике применять потоки? Можешь привести пример задачи?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Да, в практике Java часто применяю потоки (Threads) для параллельной обработки задач, особенно когда нужно выполнять несколько операций одновременно или обрабатывать данные асинхронно.
Пример задачи: обработка большого массива данных с использованием нескольких потоков для ускорения вычислений.
public class ParallelSum {
public static void main(String[] args) throws InterruptedException {
int[] data = new int[1000000];
// Заполняем массив
for (int i = 0; i < data.length; i++) {
data[i] = i + 1;
}
// Создаем два потока для подсчета суммы
SumThread t1 = new SumThread(data, 0, data.length / 2);
SumThread t2 = new SumThread(data, data.length / 2, data.length);
t1.start();
t2.start();
t1.join();
t2.join();
int totalSum = t1.getSum() + t2.getSum();
System.out.println("Total sum: " + totalSum);
}
}
class SumThread extends Thread {
private int[] data;
private int start, end;
private int sum = 0;
public SumThread(int[] data, int start, int end) {
this.data = data;
this.start = start;
this.end = end;
}
public void run() {
for (int i = start; i < end; i++) {
sum += data[i];
}
}
public int getSum() {
return sum;
}
}
Такой подход позволяет эффективно использовать ресурсы CPU и ускорить обработку.