|
1 / 1 / 1
Регистрация: 11.07.2018
Сообщений: 96
|
||||||||||||||||
Многопоточность и работа с файлами23.10.2019, 23:36. Показов 5014. Ответов 15
Метки нет (Все метки)
Здравствуйте. Поставили задачу, реализовать приложение у которого:
Имеется 3 потока, а также 2 файла 1 поток записывает каждую секунду некоторое случайное число в файл journal_1.txt 2 поток просматривает каждую секунду файл journal_1.txt и записывает сумму последних двух записанных в этот файл чисел в файл journal_2.txt 3 поток просматривает каждую секунду файл journal_2.txt и записывает сумму последних двух записанных в этот файл в файл journal_1.txt С потоками знаком плохо, потому возникли проблемы с реализацией. Попробовал сделать 3 класса под 3 потока, который как-то пытались реализовать поставленную задачу. Однако, пока что правильно отрабатывает лишь 1 поток. Второй класс некорректно забирает данные из файла journal_1.txt Исходный код основного класса
0
|
||||||||||||||||
| 23.10.2019, 23:36 | |
|
Ответы с готовыми решениями:
15
Многопоточность при работе с файлами Работа с файлами , хотелось бы с windows system файлами Многопоточность и работа с COM-портом |
|
1 / 1 / 1
Регистрация: 11.07.2018
Сообщений: 96
|
|
| 24.10.2019, 15:52 [ТС] | |
|
sleep вызывается, чтобы в файл записывались значения через каждую 1 с., а не через каждые микросекунды. Что значит оборачивать их в Thread? Разве Runnable не производит этого?
0
|
|
|
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
|
|
| 24.10.2019, 16:12 | |
|
0
|
|
|
1 / 1 / 1
Регистрация: 11.07.2018
Сообщений: 96
|
||||||
| 25.10.2019, 00:43 [ТС] | ||||||
|
Gungala
Вы имеете ввиду сделать такую конструкцию?
0
|
||||||
|
1 / 1 / 1
Регистрация: 11.07.2018
Сообщений: 96
|
|
| 25.10.2019, 10:06 [ТС] | |
|
Gungala
Спасибо, теперь тогда вопрос по самой работе программы. Первый класс все хорошо делает, добавляет в journal_1.txt какие-то цифры каждую секунду. Проблема возникает со вторым классом (реализовывать 3-ий не было смысла, ибо он аналогичен, как я понял 2-ому, только проверять будет уже journal_2.txt). Каждый раз при отработке метода start у второго класса, он кидает полностью обновленный список в journal_1.txt Например, 1 поток закинул в 1 файл цифры: 1 1 2 3 Второй поток выводит следующее: 2 2 3 2 3 5 Полагаю, что косяк в постоянном пересоздании ArrayList, но как решать подобный траб не понимаю. Есть ли способ, например, как-то достать именно последние 2 строки в файле, при этом не закрывая его?
0
|
|
|
|
||||||
| 25.10.2019, 11:17 | ||||||
|
Как вариант
0
|
||||||
|
1 / 1 / 1
Регистрация: 11.07.2018
Сообщений: 96
|
||||||
| 25.10.2019, 13:50 [ТС] | ||||||
|
Gungala
Компилятор кричит на ошибку в строчке.
0
|
||||||
|
1 / 1 / 1
Регистрация: 11.07.2018
Сообщений: 96
|
|||||||||||||||||||||
| 26.10.2019, 02:18 [ТС] | |||||||||||||||||||||
|
Gungala
Попытался сделать следующим образом: Основной класс программы
Класс, отвечающий за первый поток
1) Если делать класс 3, аналогичный классу 2, просто поменяв названия файлов, то возникает ошибка (когда оба файла пустые); 2) При повторном перезапуске программы 2 поток начинает суммировать все числа из файла text.txt заново, вместо того, чтобы продолжить просто вносить изменения. Как можно решить данные проблемы? Добавлено через 8 минут Класс, отвечающий за 3 поток соответственно:
0
|
|||||||||||||||||||||
|
|
||||||
| 26.10.2019, 11:05 | ||||||
Сообщение было отмечено W014ara как решение
Решение
В общем, я потратил достаточно много времени, но так и не смог сделать ничего умного, поэтому пришлось делать то, что работает. При каждой итерации второй поток с самого начала читает файл. Стрёмненько, но иначе никак сделать у меня не вышло
1
|
||||||
|
1 / 1 / 1
Регистрация: 11.07.2018
Сообщений: 96
|
|
| 26.10.2019, 14:06 [ТС] | |
|
Gungala
Спасибо большое, да, отрабатывает именно так, как нужно. Добавлено через 30 минут Gungala Единственное, хотел дополнительно спросить, как можно будет синхронизировать мои три потока? Чтобы они отрабатывали именно в порядке 1 2 3, а не, например 1 3 2?
0
|
|
|
|
|
| 26.10.2019, 15:29 | |
|
Не совсем понимаю, зачем использовать многопоточность, если нужно последовательное выполнение. Не знаю, если честно, я сам в этом деле почти не имею опыта. Возможно, BlockingQueue подошла бы, погугли
0
|
|
|
1 / 1 / 1
Регистрация: 11.07.2018
Сообщений: 96
|
|
| 26.10.2019, 16:16 [ТС] | |
|
Понимаю, что можно обойтись без многопоточности, но так поставили задание. Спасибо за помощь, еще раз!
0
|
|
| 26.10.2019, 16:16 | |
|
Помогаю со студенческими работами здесь
16
Многопоточность и работа с прокси
Работа с файлами(Запись,чтение,работа с данными) Лабораторная работа №5. Работа с файлами и алгоритмы сортировки
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|