Search
Write a publication
Pull to refresh
2
0
Send message

Как синхронизировать сценарий без транзакций? Штатными средствами Java

Reading time2 min
Views3.5K

Давайте представим, что вы параноик, и параноик вдвойне, когда дело касается многопоточности. Предположим, что вы делаете backend некого функционала приложения, а приложение переодически дергает на вашем серверы какие-то методы. Все вроде хорошо, но есть одно но. Что если ваш функционал напрямую зависит от каких-либо других данных, того же банального профиля например? Встает вопрос, как гарантировать то, что сценарий отработает именно так, как вы планировали и не будет каких-либо сюрпризов? Транзакции? Да это можно использовать, но что если Вы фантастический параноик и уже представляете как к вам на сервер летит 10 запросов к одному методу от разных клиентов и все строго в одно время. А в этот момент бизнес-логика данного метода завязана на 100500 разных данных. Как всем этим управлять? Можно просто синхронизировать метод и все. Но что если летят еще и те запросы, держать которые нет смысла? Тут уже начинаются костыли. Я пару раз уже задавался подобным вопросом, и были интересно, ведь задача до абсурда простая и повседневная (если вы заботитесь о том, чтобы не было логических багов конечно же ). Сегодня решил подумать, как это можно очень просто и без костылей реализовать. И решение вышло буквально на 100 строк кода.

Немного наглядного примера

Давайте предположим, что есть водитель и есть пассажир. Водитель не может менять машину до тех пор, пока клиент, например подтверждает поездку. Это что получается, клиент соглашался на поездку с одними характеристиками машины, а по факту у водителя другая машина? Не дела! Можно организовать что-то подобное:

Читать далее

GridmiAPI — простая и гибкая библиотека Android для работы с REST&RPC

Reading time3 min
Views1.6K
Здравствуйте, хабровчане!

Когда занимаешься разработкой сетевых приложений под платформу Android, понимаешь, что одно и другое приложение похоже друг на друга. С этой мыслью у большинства разработчиков инициализируется и другая мысль — «Почему бы мне не использовать какие-либо готовые решения, ведь явно моя задача не нова?». С этого момента начинается поиск подходящих библиотек для решения актуального на сей момент вопроса. По истечению некоторого времени — профит. Казалось бы всё хорошо, ведь библиотека найдена и осталась только написать реализацию решения текущего вопроса. И тут начинаются проблемы. Связаны они с управлением потоков, да и вообще Java никогда не славилась своей компактностью, все «волшебство» должно быть реализовано непосредственно разработчиком. Порой я нахожу в этом только положительные стороны, ведь логика каждого проекта отличается друг от друга кардинально. Вам постоянно приходится переключатся с потока на поток, что не очень удобно и как описывалось ранее — получается громоздко. Решение данной проблемы было реализовано и ранее, но не столь компактно, как хотелось бы. На помощь приходит библиотека для работы с HTTP — GridmiAPI. Это максимально компактное решение, которое в свою очередь позволяет оперировать данными в реальном времени.
Читать дальше →

Information

Rating
Does not participate
Registered
Activity