Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / потоки и файловая система / 7 сообщений из 7, страница 1 из 1
26.07.2015, 21:35
    #39016229
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
потоки и файловая система
Делаю так:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
                            synchronized (this) {
                                Path parent = FileSystems.getDefault().getPath(filePath).getParent();
                                if (parent != null) {
                                    String dir = parent.toString();
                                    File folder = new File(dir);
                                    if (!folder.exists()) {
                                        if (!folder.mkdirs()) {
                                            log("Error to create folder " + dir + ". Maybe need to run from Admin?");
                                        }
                                    }
                                }
                            }


в лог пишет ошибку что не может создать, по факту все создает (видимо какой-то поток создает, а другой потом тоже пытается это сделать и не получается у него)
проблема именно когда много потоков, синхронизация не помогает, так понимаю какой-то кэш используется, как победить?
...
Рейтинг: 0 / 0
26.07.2015, 22:56
    #39016239
qi_ip
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
потоки и файловая система
Проблема в чем? В том, что файл создается или в том, что приложение ругается?
...
Рейтинг: 0 / 0
26.07.2015, 22:57
    #39016240
qi_ip
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
потоки и файловая система
Или получается, что в один и тот же момент несколько потоков пытаются создать один и тот же файл?
...
Рейтинг: 0 / 0
26.07.2015, 23:35
    #39016251
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
потоки и файловая система
В данном случае проблема в том, что приложение ругается ложно
...
Рейтинг: 0 / 0
26.07.2015, 23:38
    #39016252
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
потоки и файловая система
Блин, там поди this в контексте программы это порождённый поток, а не мейн, как я рассчитывал. Щас не у компьютера
...
Рейтинг: 0 / 0
27.07.2015, 06:34
    #39016279
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
потоки и файловая система
HettДелаю так:
в лог пишет ошибку что не может создать, по факту все создает (видимо какой-то поток создает, а другой потом тоже пытается это сделать и не получается у него)
проблема именно когда много потоков, синхронизация не помогает, так понимаю какой-то кэш используется, как победить?

Быстро, легко и не правильно - выделить работу с файлом в Singleton.
...
Рейтинг: 0 / 0
27.07.2015, 20:02
    #39017114
Valery Shiskin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
потоки и файловая система
Hett,

Зачем проверка parent на null? Возьмите filePath равным d:/my/me/his.txt и будьте уверены, что ваш parent не будет null. И проще Path p = Paths.get(filePath). И уверены ли Вы, что дирректории создаются только вашим кодом? Может другой поток создает такой же dir безо всякой синхронизации.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / потоки и файловая система / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]