Sobes.tech
Назад к вопросам
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 и ускорить обработку.