Вниз  Java-программирование (1-ые посты)
- 20.02.2014 / 19:29
Virus-ON
  Пользователь

Virus-ON 
Сейчас: Offline
Ze88s, ... Маразм крепчал. Смотри выше, человек молния. :gg:
- 20.02.2014 / 19:53
Ze88s
  Пользователь

Ze88s 
Сейчас: Offline
Virus-ON, так там же не j2me :gg: ну по крайней мере сервак может подойдет на "большой" джаве
- 20.02.2014 / 21:14
Misha
  Пользователь

Misha 
Сейчас: Offline
занялся немного JavaME :)
помогите с проблемой потоков
задача - функции чтения и записи в файл... void save(String s) я сделал, и он работает) не раз мне попадалась ошибка блокировки потоков при создании FileConnection в главном потоке, если же перенести его в другой, то программа продолжает работать с файлом без инициализированного FileConnection, Thread.join() не помогает - все намертво зависает...
задача тут не просто void read(), а каким-то фигом реализовать String read(), чтобы возвратить данные
вот мой код:
Открыть спойлер
я даже пытался заводить дофигасколько переменных например completed, но главный поток тупо зависает не смотря даже на то, что второй поток завершился :-(
никогда раньше не работал с файловой системой на JavaME... они намудрили много лишнего из-за своей защиты с вопросом на разрешение к доступу к файлам)
Открыть спойлер


Изменено Misha (20.02 / 21:20) (всего 2 раза)
- 20.02.2014 / 22:21
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
Misha, 1. Уж не в стандартном эмуляторе ты тестируешь? Там специально стоит настройка на более сильную защиту. Нужно сменить на другую и тогда всё будет работать и в главном потоке.
2. Недавно решал точно такую же проблему, помогли wait() / notify().
__________________
 let live
- 21.02.2014 / 00:02
Misha
  Пользователь

Misha 
Сейчас: Offline
спасибо) не мог бы подробнее написать? например:
void read(){
...
th.join();
}
...
public void run(){
...
}
дальше я все пойму) плохо понимаю связь потоков, synchronized и volatile) до сих пор не пойму почему сделали interrupt вместо stop :-)
- 21.02.2014 / 00:42
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
Misha,
  1. public String read() {
  2.     synchronized (this) {
  3.         try { wait(); } catch (InterruptedException ex) { }
  4.     }
  5.     return text
  6. }
  7.  
  8. //
  9. text = "Обновлено";
  10. synchronized(this) { notify(); }

__________________
 let live
- 21.02.2014 / 07:34
Misha
  Пользователь

Misha 
Сейчас: Offline
спасибо еще раз) вечером попробую, уже в школу опаздываю...
- 21.02.2014 / 09:02
DominaN
  Пользователь

DominaN 
Сейчас: Offline
Misha, здоров ли ты сегодня? Вот оно, вот оно, развращающее действие "больших" языков. На чтение/запись по отдельному классу, да ещё и каждый со своим потоком. Красота :facepalm2:
- 21.02.2014 / 17:13
Misha
  Пользователь

Misha 
Сейчас: Offline
DominaN, изначально у меня были это все в виде фукнкций, но пришлось эксперементировать с Threadam'и потому что одна из этих операций блокирует главный поток...
- 21.02.2014 / 17:59
Misha
  Пользователь

Misha 
Сейчас: Offline
все ровно не понимаю как сделать :-D
у меня в главном потоке создается новый поток, потом я запрашиваю функцию того класса, и при этом действия происходят в 1 потоке :-( получается надо как-то с помощью экземпляра Thread вызвать ту функцию или попытаться установить синхронизацию с методом run, который запускается не на прямую, а через Thread.start() :-(
Наверх  Всего сообщений: 16875
Фильтровать сообщения
Поиск по теме
Файлы топика (794)