Size: a a a

Kotlin Community

2020 April 09

..

... ... in Kotlin Community
Понял, извиняюсь
источник

I

Ivan in Kotlin Community
Vladimir Petrakovich
А на что влияет попадание в тело метода?
на синхронизацию методов, получается блоками внутри методов этого не сделать и нужно использовать
@Synchronized
источник

VP

Vladimir Petrakovich in Kotlin Community
Ivan
на синхронизацию методов, получается блоками внутри методов этого не сделать и нужно использовать
@Synchronized
Я не могу понять, в чём разница для вас между тем, что монитор объекта будет захвачен сразу при входе в метод (@Synchronized) и в самом его начале (synchronized { }). Ведь под блокировкой выполняется один и тот же ваш код.
источник

I

Ivan in Kotlin Community
Vladimir Petrakovich
Я не могу понять, в чём разница для вас между тем, что монитор объекта будет захвачен сразу при входе в метод (@Synchronized) и в самом его начале (synchronized { }). Ведь под блокировкой выполняется один и тот же ваш код.
разница в скорости захвата и отсутствии гарантии, что вызов метода, с блоком synchronized() { } в самом начале, отработает сразу же после вызова этого метода -> synchronized() { } не может использоваться когда необходима синхронизация самих методов
источник

BP

Bogdan Panchenko in Kotlin Community
Ivan
на синхронизацию методов, получается блоками внутри методов этого не сделать и нужно использовать
@Synchronized
Все зависит что вам нужно. Нужно помнить что синхронизация не дешовая
источник

VP

Vladimir Petrakovich in Kotlin Community
Ivan
разница в скорости захвата и отсутствии гарантии, что вызов метода, с блоком synchronized() { } в самом начале, отработает сразу же после вызова этого метода -> synchronized() { } не может использоваться когда необходима синхронизация самих методов
Вы, мне кажется, неправильно понимаете гарантии синхронизации.
Нет вообще никакой гарантии, что текущий поток не уйдёт в астрал на неопределённое время в любой точке выполнения. Соответственно, в каком порядке они захватят блокировку, тоже гарантий никаких нет, если вы только их опять же не синхронизируете другой блокировкой.
источник

I

Ivan in Kotlin Community
Vladimir Petrakovich
Вы, мне кажется, неправильно понимаете гарантии синхронизации.
Нет вообще никакой гарантии, что текущий поток не уйдёт в астрал на неопределённое время в любой точке выполнения. Соответственно, в каком порядке они захватят блокировку, тоже гарантий никаких нет, если вы только их опять же не синхронизируете другой блокировкой.
так то да, но генерация нескольких строчек кода перед блоком усугубляет это еще больше))
источник

VP

Vladimir Petrakovich in Kotlin Community
Ivan
так то да, но генерация нескольких строчек кода перед блоком усугубляет это еще больше))
Это не влияет совершенно ни на что. На деле после JIT компиляции вызова метода как такового может и не быть. Лучше не думать об этом.
источник

VP

Vladimir Petrakovich in Kotlin Community
И наличие этих строчек в выполняющемся коде тоже под вопросом
источник

I

Ivan in Kotlin Community
Vladimir Petrakovich
Это не влияет совершенно ни на что. На деле после JIT компиляции вызова метода как такового может и не быть. Лучше не думать об этом.
ну вот на досуге я сравню поведение более плотно (сейчас не до этого) и скажу - влияет или нет))
источник

VP

Vladimir Petrakovich in Kotlin Community
Ivan
ну вот на досуге я сравню поведение более плотно (сейчас не до этого) и скажу - влияет или нет))
Дело ваше, но это похоже на слегка бесполезное занятие 🤷‍♂️
источник

I

Ivan in Kotlin Community
Vladimir Petrakovich
Дело ваше, но это похоже на слегка бесполезное занятие 🤷‍♂️
потому и "на досуге"
источник

VP

Vladimir Petrakovich in Kotlin Community
Лучше сравнить производительность с ReentrantLock, и то полезнее
источник

BP

Bogdan Panchenko in Kotlin Community
Ivan
ну вот на досуге я сравню поведение более плотно (сейчас не до этого) и скажу - влияет или нет))
Поведения может меняться из-за: jit/aot, разные jit и jvm, разная архитектура процессов, как генерит код компилятор котлина
источник

BP

Bogdan Panchenko in Kotlin Community
Можно посмотреть на сгенерированный котлиновский компилятором, и проштудировать спеку
источник

I

Ivan in Kotlin Community
Bogdan Panchenko
Поведения может меняться из-за: jit/aot, разные jit и jvm, разная архитектура процессов, как генерит код компилятор котлина
да я на конкретном аппарате с конкретной багой
источник

BP

Bogdan Panchenko in Kotlin Community
Ivan
да я на конкретном аппарате с конкретной багой
Нужно ещё смотреть на свой код. И понимать где может пройти рассинхрон
источник

КР

Кирилл Романенко in Kotlin Community
Я правильно понимаю, что у Flow нет экстеншена, который бы был как debounce, но только в начале? То есть мне нужно прождать N времени, отдать последний пришедший элемент, а дальше работать в нормальном режиме.
источник

AM

Andrew Mikhaylov in Kotlin Community
https://kotlinlang.org/docs/reference/compiler-reference.html
Не видел раньше эту страничку :)
источник

AM

Alex M in Kotlin Community
Кирилл Романенко
Я правильно понимаю, что у Flow нет экстеншена, который бы был как debounce, но только в начале? То есть мне нужно прождать N времени, отдать последний пришедший элемент, а дальше работать в нормальном режиме.
А если использовать conflate + delay?
источник