Форум программистов, компьютерный форум, киберфорум
Java для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 05.10.2021
Сообщений: 50

Управление потоками

19.01.2023, 15:31. Показов 350. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Необходимо реализовать синхронизацию потоков таким образом, чтобы если первый поток был занят обработкой первой строки, то второй брал вторую строку и т.д., пока не кончатся строки или количество потоков. Как это реализовать? Вот, что уже имеется:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
        String str1 = "";
        int qu1 = 0;
        String newLine1;
        File f1 = new File(TextMatrix1.getText());
        String str2 = "";
        int qu2 = 0;
        String newLine2;
        File f2 = new File(TextMatrix2.getText());
 
        try ( BufferedReader br = new BufferedReader(new FileReader(f1))) { 
            Scanner sc = new Scanner(f1);
            while ((newLine1 = br.readLine()) != null) {
                str1 = str1 + " " + newLine1;
                qu1++;
            }
        } catch (Exception e) {
 
        }
 
        try ( BufferedReader br = new BufferedReader(new FileReader(f2))) {
            Scanner sc = new Scanner(f2);
            while ((newLine2 = br.readLine()) != null) {
                str2 = str2 + " " + newLine2;
                qu2++;
            }
        } catch (Exception e) {
 
        }
 
        str1 = str1.substring(1, str1.length());
        str2 = str2.substring(1, str2.length());
        quantity = qu1 + qu1;
 
        for (int i = 0; i < str1.length(); i++) {
            char c1 = str1.charAt(i);
            char c2 = str2.charAt(i);
            matrix1[i] = String.valueOf(c1);
            matrix2[i] = String.valueOf(c2);
        }
 
        if (Integer.parseInt(TextQuantity.getText()) >= qu1) {
            JOptionPane.showMessageDialog(rootPane, "Неправильно указано количество потоков", "Ошибка", JOptionPane.ERROR_MESSAGE);
            return;
        } else {
 
            Thread[] threads = new Thread[Integer.parseInt(TextQuantity.getText())]; //количество потоков
            for (int j = threads.length - 1; j < quantity; j++) {
                for (int i = 0; i < threads.length; i++) {
                    num++; 
                    threads[i] = new Thread(new Runnable() {
                        public void run() {
                                synchronized (threads) {
                                    if (matrix1[num] != null) {
                                        if (Character.isDigit(matrix1[num].charAt(0))) {
                                            res = Double.parseDouble(matrix1[num]) + Double.parseDouble(matrix2[num]); //сложение двух переменных
                                            matrix3[num] = Double.toString(res);
                                            System.out.println("результат сложения: " + matrix3[num]);
                                        }
                                    }
                                }
 
                        }
 
                    });
                    threads[i].start();
                    System.out.println("Поток №" + (i + 1) + ", строка №" + i + ", результат сложения: " + res);
                    System.out.println(threads[i].toString());
                    if ((j + 1) == qu1) {
                        i = threads.length;
                    }
                }
 
            }
        }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.01.2023, 15:31
Ответы с готовыми решениями:

Проблема с потоками
У меня запускается не менюшка а все сразу ПАМАГИТЕ я новенький package lab6; import java.util.*; public class LR_6 { ...

Копировать файл потоками
Файл копировать надо двумя потоками: 1 Поток вычитывает из файла и записывает данные в класс посредник 2 Поток берет данные из класса...

Не могу разобраться с потоками!
Есть поток с массивом, нужно во втором потоке найти элементы этого массива которые являются квадратами целых чисел. Вот сам массив ...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.01.2023, 15:31
Помогаю со студенческими работами здесь

Сложение матриц потоками
Программа считывает матрицы с файла, а также пользователь вводит количество потоков необходимых для их сложения. Как можно реализовать...

Проблема с потоками (файлы)
В коде программы необходимо несколько раз открывать один и тот же файл. Проблема в том, когда закрываешь поток для сохранения данных в...

Многопоточность. Управление потоками из главного потока
Добра! Читал в интернете про потоки в Java и возник вопрос, например есть поток &quot;player&quot; и в нем воспроизводится аудиофайл ...

разбираемся с потоками
добрый вечер всем начинаю потихоньку разбираться с потоками...есть такая задача - у меня есть программа - которые использует 10-15...

Работа с потоками
Нужно сделать программу которая скачивает несколько файлов в разных потоках.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru