pattern pre sync/async volanie metod [JAVA]

Programovacie jazyky, rady, poradňa...
feromakovi
Expert
Expert
Príspevky: 165
Registrovaný: 24 okt 2008, 14:16
Bydlisko: Bánovce nad Bebravou

pattern pre sync/async volanie metod [JAVA]

Príspevok od používateľa feromakovi »

Ahojte,

rozmyslam nad takymi best practices, ako vyuzit volaco co JAVA poskytuje pre vytvorenie paternu (ktory ani neviem pomenovat). Ide o to ze mam nejaky objekt dajme tomu ze helper. on obsahuje len synchronne metody. Nikde sa neriesia Threads ani nic podobne. A teraz by som chcel do tohto objektu dorobit metodu (jednu vseobecnu) napr: runAsync, ktora by brala parameter inu metodu z toho isteho objektu.
priklad

Kód: Vybrať všetko

public class Helper{
   public Object syncMethod(){
         return new Object();
   }

   public ...... runAsync(Method method, Listener listener){
          if(method {==, instanceof, equals} syncMethod){
                  new Thread()....run Object o = syncMethod(); listener.onFinish(o);
          }
   }
}
nwm nieco take. neviem ani ci je spravny pristup riesit tu asynchronnost priamo v tej istej triede, len mi to pride take ze byt o bolo vsetko pokope. Viem ze jedna cesta je pouzit annotation. Ale zase nechem pre kazdu synchronnu metodu vytvarat jej asynchronnu kopiu.

Skusta sa mi pls k tomu vyjadrit, ci tento pristup je uplne zly alebo existuje nejaky podobny pattern, pripadne nieco podobne. Keby mam nastudovanu celu JAVU mozno by som na nieco prisiel ze by sa dalo vyuzit, no nemam a preto sa pytam konkretne. Ked mi niekto nieco poradi, nejaku feature co java poskytuje potom si to nastudujem podrobne.

dakujem
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8219
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: pattern pre sync/async volanie metod [JAVA]

Príspevok od používateľa harrison314 »

s javou som robil uz davno, ale myslim, ze stale je v nej slusny problem spravit "pointer" na metodu, ide to iba cez reflexiu a mena metod ulozene ako string, co by som nepovazoval za prave najlepsi napad (okrem toho to je pomale). Dalsia vec je, ze trieda Thread sa nato nehodi pouzil by som thread pool alebo tasky.

Podla mna je najrozumnejsia vec si nato spravit wrapper.
miki690
Medium Professional
Medium Professional
Používateľov profilový obrázok
Príspevky: 1255
Registrovaný: 07 okt 2005, 22:07
Bydlisko: KE
Kontaktovať používateľa:

Re: pattern pre sync/async volanie metod [JAVA]

Príspevok od používateľa miki690 »

Len doplním k tomu čo písal harrison. Ďalšia možnosť kotrá sa ponúka je použiť spring AOP a vytboriť aspect ktorý by presne toto robil. Ak nepoužívaš spring vôbec, tak len kvôli tejto veci zavádzať novú dependency by bol zbytočný overkill. Naviac spring AOP je tiež implementované cez reflection API čiže to bude pomalšie. Wrapper (pattern decorator) bude asi najčistejšie riešenie v tvojom prípade.
feromakovi
Expert
Expert
Príspevky: 165
Registrovaný: 24 okt 2008, 14:16
Bydlisko: Bánovce nad Bebravou

Re: pattern pre sync/async volanie metod [JAVA]

Príspevok od používateľa feromakovi »

Dakujem pani za radu, implementoval som to cez ten pattern decorator, jednak som sa to konecne naucil (v skole som to jaksi nepochopil z tych grafov) a funguje to fakt dobre. dik
Napísať odpoveď