-
Notifications
You must be signed in to change notification settings - Fork 47
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
parallelism_homework #1
base: master
Are you sure you want to change the base?
Conversation
Ввел тредпулы для рекурсивного перебора папок и для асинхронного похода на гугл: код заработал достаточно шустро. Но появилась проблема с завершением программы (она также описана в комментариях к коду): несмотря на то что все вычисления завершаются успешно, программа не заканчивается с кодом 1. То есть недобит какой-то тред (и этот тред явно из ForkJoinPool, так как проблема появилась еще до асинхронных походов на гугл). Было бы интересно узнать, каким образом возможно исправить этот недостаток. |
for (Path filePath : Files.newDirectoryStream(dirPath)) { | ||
if (Files.isDirectory(filePath)) { | ||
DirAction nestedDirAction = new DirAction(filePath); | ||
nestedDirAction.fork(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
результат этой операции надо сохранить и в конце этого метода их всех дождаться, поэтому проблемы с выходом из программы
} finally { | ||
// даже несмотря на этот join какой-то тред не закрывается | ||
// даже после проведения всех требуемых вычислений :( | ||
this.join(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
это кажется не нужно
} | ||
|
||
private void outputStringAssemble () { | ||
SearchCall searchCall = new SearchCall(dirPath); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
вот эти классы должны быть тоже тасками и их надо форкать а потом джойнить
testCount(); | ||
testSearch(); | ||
} | ||
Path path = Path.of("C:\\1_Konstantin\\1_hh\\concurrency\\hh-school-1\\" + |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
это надо было бы в агрументы
домашку принял, времени подробно в несколько итераций пофиксить не хватает, общие замечания написал |
К сожалению, домашка пока сыровата и уже за дедлайном, так как меня "сожрал" выпускной проект. Но я все равно хотел бы ей заняться, так как очень захватила тема параллельных вычислений.
Хотел реализовать тредпулы (чтобы избежать неконтроллируемого роста количества тредов), но не получилось: почему-то треды, загруженные в ExecutionService, запускались последовательно, что странно. Буду продолжать работу.