Size: a a a

2020 May 30

БТ

Бекмамбет Трахтенбер... in Java & Co
не обязательно
источник

IF

Ilya Frontend in Java & Co
Tailer McLayer
если в условие while поместить булевую переменную его надо помечать volatile?
вообще да или она может закешироваться
источник

БТ

Бекмамбет Трахтенбер... in Java & Co
ну и вообще попробуй повесить synchronized блок на wait, но не на notify
источник

TM

Tailer McLayer in Java & Co
Ilya Frontend
вообще да или она может закешироваться
то есть мне вместо notify изменять булевую переменную и сделать
while (!flag){
Thread.currentThread().yield():
}
источник

БТ

Бекмамбет Трахтенбер... in Java & Co
synchronized(sync){
    while(!flag){
            sync.wait();
     }
}
источник

IF

Ilya Frontend in Java & Co
Бекмамбет Трахтенберг
ну и вообще попробуй повесить synchronized блок на wait, но не на notify
When thread calls wait it releases the current object lock (it keeps all locks from other objects) and than goes to WAITING state.
источник

БТ

Бекмамбет Трахтенбер... in Java & Co
Ilya Frontend
When thread calls wait it releases the current object lock (it keeps all locks from other objects) and than goes to WAITING state.
Чтобы вызывать wait в любом случае нужно получить лок
источник

БТ

Бекмамбет Трахтенбер... in Java & Co
Хотя лок должен по идее быть и при вызове notify, и если это не работает, то странная хрень
источник

БТ

Бекмамбет Трахтенбер... in Java & Co
мне кажется всё из-за отсутствия флага и while блока, так что попробуй с ними и скажи что будет
источник

TM

Tailer McLayer in Java & Co
Бекмамбет Трахтенберг
Хотя лок должен по идее быть и при вызове notify, и если это не работает, то странная хрень
должен, так как sync.notify() насколько понял вызывается из другого потока-> из другого класса, а монитор один на класс
источник

VS

Vitaly Sirotkin in Java & Co
Ебать вы советчики

Возьми countdownlatch или барьер и не трахай себе мозг
источник

БТ

Бекмамбет Трахтенбер... in Java & Co
источник

VS

Vitaly Sirotkin in Java & Co
Tailer McLayer
public Object sendMessage(SendMessageOptions options, InputMessageDocument document)
     throws InterruptedException {

   Object chat = getChat(user.id);

   if (!(chat instanceof Chat)) {
     createStorageChat();
   }

   client.send(new TdApi.SendMessage(user.id, 0, options, null, document), object -> {
     response = object;
     sync.notify();
   });
   sync.wait();
   return response;
 }

java.lang.IllegalMonitorStateException: null
Ты вообще уверен что у тебя отправка асинхронно происходит?
источник

БТ

Бекмамбет Трахтенбер... in Java & Co
Да, это ж тдапи
источник

TM

Tailer McLayer in Java & Co
Бекмамбет Трахтенберг
мне кажется всё из-за отсутствия флага и while блока, так что попробуй с ними и скажи что будет
Проблему решил завернув wait() в while, спасибо
public Object sendMessage(SendMessageOptions options, InputMessageDocument document)
     throws InterruptedException {

   Object chat = getChat(user.id);

   if (!(chat instanceof Chat)) {
     createStorageChat();
   }

   client.send(new TdApi.SendMessage(user.id, 0, options, null, document), object -> {
     response = object;
     synchronized (sync) {
       flag = true;
       sync.notify();
     }
   });
   synchronized (sync) {
     while (!flag) {
       sync.wait();
     }
   }
   flag = false;
   return response;
 }
источник

МК

Максим Калашников... in Java & Co
а зачем тут вообще flag?
источник

PM

Pavel Martynchuk in Java & Co
Друзья, быть может кто-нибудь объяснит что от меня требуется? И как реализовать?
источник

PM

Pavel Martynchuk in Java & Co
В текстовом файле без ошибок записано логическое выражение следующего вида:
<лог.выр>::=true | false | <лог.выр> and <лог.выр> | <лог.выр> or <лог.выр>.
Используя стек, вычислить значение этого выражения с учетом общепринятого приоритета операций.
источник

D

DOCDOCTOR in Java & Co
Всем привет, задал вопрос на стэк, не буду дублировать, так скрины и тд) вот ссылка https://stackoverflow.com/questions/62102837/apache-camel-i-make-a-request-for-rest-service-but-i-cant-get-data-from-the-r,  буду очень благодарен за помощь, а то заипался уже
источник

МК

Максим Калашников... in Java & Co
Pavel Martynchuk
В текстовом файле без ошибок записано логическое выражение следующего вида:
<лог.выр>::=true | false | <лог.выр> and <лог.выр> | <лог.выр> or <лог.выр>.
Используя стек, вычислить значение этого выражения с учетом общепринятого приоритета операций.
ну надо распарсить строку и получить чтр-то типа true && (true || false) и вернуть результат true
источник