Skip to content
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

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open

Conversation

rogozhinski
Copy link

К сожалению, домашка пока сыровата и уже за дедлайном, так как меня "сожрал" выпускной проект. Но я все равно хотел бы ей заняться, так как очень захватила тема параллельных вычислений.
Хотел реализовать тредпулы (чтобы избежать неконтроллируемого роста количества тредов), но не получилось: почему-то треды, загруженные в ExecutionService, запускались последовательно, что странно. Буду продолжать работу.

@rogozhinski rogozhinski changed the title the first attempt parallelism_homework Mar 28, 2019
@rogozhinski
Copy link
Author

rogozhinski commented Mar 28, 2019

Ввел тредпулы для рекурсивного перебора папок и для асинхронного похода на гугл: код заработал достаточно шустро.

Но появилась проблема с завершением программы (она также описана в комментариях к коду): несмотря на то что все вычисления завершаются успешно, программа не заканчивается с кодом 1. То есть недобит какой-то тред (и этот тред явно из ForkJoinPool, так как проблема появилась еще до асинхронных походов на гугл).

Было бы интересно узнать, каким образом возможно исправить этот недостаток.

for (Path filePath : Files.newDirectoryStream(dirPath)) {
if (Files.isDirectory(filePath)) {
DirAction nestedDirAction = new DirAction(filePath);
nestedDirAction.fork();
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

результат этой операции надо сохранить и в конце этого метода их всех дождаться, поэтому проблемы с выходом из программы

} finally {
// даже несмотря на этот join какой-то тред не закрывается
// даже после проведения всех требуемых вычислений :(
this.join();
Copy link
Owner

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);
Copy link
Owner

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\\" +
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

это надо было бы в агрументы

@kincajou
Copy link
Owner

домашку принял, времени подробно в несколько итераций пофиксить не хватает, общие замечания написал

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants