Size: a a a

Clojure — русскоговорящее сообщество

2020 November 17

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
Проблема в том, что тред считается занятым, а на деле он большую часть времени ждет.
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
Для одного, конечно, не страшно. Как вариант, посмотреть
ScheduledThreadPoolExecutor -- это не требует сторонних библиотек. Другие варианты -- clojure.core.async и manifold
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
В последнем есть d/loop и time/in. Он может вызывать recur по таймауту
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
ну и есть [im.chit/cronj "1.4.4"], отличная либа на задач по крону
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
месяц или два назад я кидал примеры по ее использованию, посмотри в поиске
источник

AS

Anton Strukov in Clojure — русскоговорящее сообщество
Ivan Grishaev
месяц или два назад я кидал примеры по ее использованию, посмотри в поиске
Благодарю
источник

VL

Vladimir Legkunets in Clojure — русскоговорящее сообщество
Ivan Grishaev
Проблема в том, что тред считается занятым, а на деле он большую часть времени ждет.
А в чем именно проблема с Thread.sleep()? Мне кажется его и придумали для таких ситуаций
источник

VL

Vladimir Legkunets in Clojure — русскоговорящее сообщество
Vladimir Legkunets
А в чем именно проблема с Thread.sleep()? Мне кажется его и придумали для таких ситуаций
Ты наверное имеешь ввиду случай когда целесообразно использовать pool, да?
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
Насколько я понимаю, тред будет занят для ОС даже в спящем состоянии.
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
а в concurrent либах тред просто займется другой задачей
источник

ap

andei papkov in Clojure — русскоговорящее сообщество
В джава свои треды, или вы о другом?
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Vladimir Legkunets
А в чем именно проблема с Thread.sleep()? Мне кажется его и придумали для таких ситуаций
ну, на примере CLR https://blogs.msmvps.com/peterritchie/2007/04/26/thread-sleep-is-a-sign-of-a-poorly-designed-program/

а вообще лучше погуглить ответ на данный вопрос
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
sleep просто уступает машинное время другим тредам, но сам тред при этом занят, его нельзя занять чем-то другим
источник

VL

Vladimir Legkunets in Clojure — русскоговорящее сообщество
andei papkov
В джава свои треды, или вы о другом?
не, сейчас джава нативные потоки использует
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
в manifold было бы так

(d/loop [state {:counter 0}]
 ...
  (time/in 5000 (fn [] (recur (update state :counter inc)))))
источник

VL

Vladimir Legkunets in Clojure — русскоговорящее сообщество
Ivan Grishaev
sleep просто уступает машинное время другим тредам, но сам тред при этом занят, его нельзя занять чем-то другим
короче да, мы говорим об одном и том же, если тебе нужно назначать много асинхронных задач - то целесообразно использовать пул.
Но если речь идет о 2-3 потоках - то смысла заморачиваться особо нет
источник

A

Alexander in Clojure — русскоговорящее сообщество
andei papkov
В джава свои треды, или вы о другом?
Java green thread implementations have not been supported by Sun / Oracle JVMs since Java 1.2.
источник

A

Alexander in Clojure — русскоговорящее сообщество
это практически в другой геологической эре
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
ну да, если один, то можно отщипнуть тред насовсем под вечный цикл
источник

VL

Vladimir Legkunets in Clojure — русскоговорящее сообщество
ну да, просто надо понимать что это не супер такой ценный ресурс - их в современных ОС тысячи - это не то же самое как ты бы ядро отщипнул если без Thread.sleep
источник