
Dmitry
28.10.2016
03:20:16
вот эта шляпа в работе
http://test.handmug.ru/vkmusictoyoutubeplaylist/

James Tiberius Kirk ?
28.10.2016
06:02:39

Dmitry
28.10.2016
06:07:21
не смысл это

Ivan
28.10.2016
06:12:09
ну тут весь код

Google

Ivan
28.10.2016
06:12:12
крайне плох

Bogdan
28.10.2016
06:15:11
while (queue != null) {
YouService.saveToPlaylistSong(playlistname, queue.take());
}
а почему гц сожрет очередь?

Ivan
28.10.2016
06:15:51
либо тут кусок кода с обнулением выпилили
либо явный лик
если на этапе формирования плайлиста возникнет ошибка пользователь об этом даже не узнает
для того чтобы не плодить потоки нужно использовать пул
@Scope("session") на контроллере
явно пишет джун без руководства лида или хотя бы мидла

Dmitry
28.10.2016
06:26:28
ес джун

Ivan
28.10.2016
06:29:59
Что произойдет если зайдет 700 пользователей

Google

Ivan
28.10.2016
06:30:05
и создадутся их сессии?

Dmitry
28.10.2016
06:31:27
ок а как мне стейт сохранять?

Ivan
28.10.2016
06:31:52
используй @SessionAttributes на контроллере

Dmitry
28.10.2016
06:31:57
на фласке писал все в сессию кидал, вроде ок, 700 юзеров - это ваще фантастика

Ivan
28.10.2016
06:32:08
а scope("session") повесь на отдельный класс

Dmitry
28.10.2016
06:32:59
да просто так проще было, хотел в объект сессии пихать, но лень
но пасиб ))

Ivan
28.10.2016
06:34:04
потоки через .start не создавай
как минимум почитай что тут пишут
https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ExecutorService.html

Dmitry
28.10.2016
06:34:32
ну да, можно пулом, но не суть
мне бы понять как передавать объект в потом
поток
можно же просто как ссылку отдать, да?

Bogdan
28.10.2016
06:35:26
а сейчас ты что делаешь?

Ivan
28.10.2016
06:36:02
в твоей задаче можно использовать стримы
из Java8
хотя у тебя продюсер есть

Dmitry
28.10.2016
06:36:39
ну так и делаю... но просто плейлист создается с задержкой, а дебажить лень было, вот хотел у профи спросить - ну вы типо
стримы боюсь - у них стектрейс ужасен

Google

Bogdan
28.10.2016
06:37:28
ну я так понял, у тебя на каждый запрос создается висячий поток

Ivan
28.10.2016
06:37:29
ну вот конкретно в твоей это задаче можно юзать итератор или стримы, а не делать код таким сложным

Dmitry
28.10.2016
06:37:49
в бекграунде
над попробовать эту фичу XD

Bogdan
28.10.2016
06:39:41
YouService делает http-запросы?

Dmitry
28.10.2016
06:39:52
ага
и продюсер и консьюмер делают запросы

Bogdan
28.10.2016
06:40:12
очевидно именно там основное время исполнения

Dmitry
28.10.2016
06:41:13
дебажть короче с System().currentTime() походу )))
всем спасибо, ребят)

Ivan
28.10.2016
06:42:22
код исправь иначе в будущем багов схватишь охренеешь

Bogdan
28.10.2016
06:42:40
если у тебя 1000 песен, ты думаешь 1000 запросов сделается за наносекунды?

Dmitry
28.10.2016
06:44:07
не я понимаю это. я 2000 прогонял, минута где-то. но я не понимаю почему плейлист создается не сразу ) хотя по логике он должен создаваться снговенно - первый вызов же ))

Bogdan
28.10.2016
06:45:06
String playlistId = YouService.createPlaylistOnYoutube(playlistname);
вот это?

Dmitry
28.10.2016
06:45:13
ага

Bogdan
28.10.2016
06:45:18
бля
нц и при чем тут консьюмеры/продюсеры?

Google

Bogdan
28.10.2016
06:46:01
это надо у ютуба спрашивать

Dmitry
28.10.2016
06:46:40
ага, мой фейл. а вот не скажешь как вот это пофиксить?
while (queue != null) { ...
в консьюмере
а то очередь то не подберется gc() же )) я чет подумал )
gc же с своем потоке да?

Ivan
28.10.2016
06:47:46
gc везде
вот только ссылка не в твоем потоке
в консумере ссылка queue всегда будет ссылать на объект

Admin
ERROR: S client not available

Ivan
28.10.2016
06:49:36
пока ты ее явно не установишь в null

Dmitry
28.10.2016
06:49:43
походу thread надо интерраптить...

Ivan
28.10.2016
06:49:52
?

Dmitry
28.10.2016
06:51:25
а где ее обнулять? )
чет не пойму

Ivan
28.10.2016
06:51:44
ты ее не обнулишь
а в чем прикол именно сделать два потока?
очень трудоемкая задача?

Dmitry
28.10.2016
06:55:28
ну там типо спрева надо получить vidoID песни гетом у ютуба, а потом надо еще постом это в плейлист пихнуть
вот пока один получает videoId, второй сохраняет в плейлист
ну и очередь между ними

Google

Dmitry
28.10.2016
06:58:14
а что если в очередь на продюсере null засунуть, а в консьюмере while (queue.take() != null )
на последней итерации в продюсере ))

Ivan
28.10.2016
06:59:28
ты учти что несмотря на то что объект один и тот же ссылки на него это два разных значения
почитай что такое ссылка в Java
поэтому обнуление одной ссылки не дает автоматического обнуления второй

Dmitry
28.10.2016
07:01:17
спасибо, походу без книжек не пройдет )))

Ivan
28.10.2016
07:01:18
ааа я понял
ты хочешь null запихить в очередь

Dmitry
28.10.2016
07:01:37
ага )))

Ivan
28.10.2016
07:01:42
я бы советовал тебе с таким подходом принести ружье в офис
на всякий случай
потому что этот код в продакшн

Dmitry
28.10.2016
07:01:57
да я в курсе )))))

Ivan
28.10.2016
07:02:01
лучше не деплоить

Dmitry
28.10.2016
07:02:15
костыль же )

Ivan
28.10.2016
07:02:17
ты сможешь либо всех вокру завалить либо себя

Nikita
28.10.2016
07:02:20
Ребз, всем привет) подскажите плз хороший онлайн курс под Андроид

Dmitry
28.10.2016
07:02:44
лан, пойду читать толстые книги ))))

Nikita
28.10.2016
07:03:30
а на русском хорошие ресурсы есть на примете?

Dmitry
28.10.2016
07:03:34