Article View: pl.comp.lang.java
Article #149861Re: czy wątki mogą świadczyć usługi?
From: Maciej Sobczak
Date: Sat, 27 Mar 2010 22:06
Date: Sat, 27 Mar 2010 22:06
91 lines
4828 bytes
4828 bytes
On 27 Mar, 00:10, keef <a...@a.com> wrote: > > Runnable sam w sobie nie ma nic wspólnego z wątkami, więc jego użycie > > w definicji klasy nie sugeruje wielowątkowości. To jest jedynie > > znacznik: "uwaga, instancje tej klasy można wywołać", > Podobnie jak Serializable - również jest interfejsem znacznikowym. Nie, to co innego. Pisząc "znacznik" miałem na myśli, że ten interfejs wyraża pewną "zdolność" (zresztą jak każdy inny interfejs, więc może bez sensu to napisałem). Natomiast Serializable jest znacznikiem rozpoznawanym przez kompilator i to działa na innym poziomie. Prawdopodobnie gdyby anotacje były w Javie od początku, to interfejsu Serializable by po prostu nie było, bo to jest bardzo kiepski sposób na znacznikowanie czegokolwiek. > Poza tym przeczytaj dokładnie o co chodzi - wyciąłeś ten tekst więc > pozwól, że go wstawię: > > <ciach> > (...)opakować metodę w obiekt, żeby można ją było przekazać jako parametr. > </ciach> > > Nie czepiam się interfejsu Runnable. Pytam się, dlaczego ktoś używa tego > samego rozwiązania we własnym kodzie? Bo ma podobny use-case. > Ponieważ uważam, że jakkolwiek > pasuje do wątków, to inne jego zastosowania są wątpliwe Pokazałem przykład z GUI. > Czy nie lepiej jest użyć wzorca projektowego 'Komenda', który robi > bardzo podobną rzecz, ale bez wiązania jej z wątkami? Runnable niczego nie wiąże z wątkami, już pisałem. > Równie dobrym > wyjściem jest Callable<T>. Jeśli chcesz coś zwracać. > Oba nie wymagają rzutowania, w > przeciwieństwie od Runnable ;-) Jakiego rzutowania wymaga Runnable? Zwłaszcza, że run() niczego nie zwraca? > Pomimo tego, że możliwe jest, jak ktoś zaproponował, dziedziczenie po > Thread, lub pisanie explicite "public interface MyFancyBussinesLogic > extends Runnable", pytanie brzmi "po co tak robić?". Dziedziczenie po Thread to faktycznie robienie wiochy, ale MyFancyBusinessLogic może w ten sposób wyrazić swoją gotowość do bycia wywołanym. > Czy rzeczywiście > klienci interfejsu MyFancyBussinesLogic muszą wiedzieć o wątkowości? Nie ma tu mowy o wątkach. (dlatego wycinam dalsze Twoje uwagi o wątkach) > > Interfejs Runnable (jak i każdy inny) opiera się na użyciu > > polimorfizmu, więc pytanie jest dziwne. > > Nie. Sam napisałeś - znacznik. Więc Runnable, Serializable opierają się > na polimorfizmie bardzo słabo... Runnable to prawdziwy interfejs z prawdziwą metodą, która jest naprawdę definiowana przez klasę implementującą ten interfejs. Polimorfizm pierwsza klasa. > Podobnie 'Runnable' - łącząc interfejs Runnable z Twoją logiką > (interface MyFancyBussinesLogic extends Runnable) łączysz wątkowość Znowu nie. Runnable nie implikuje żadnej wielowątkowości. > A dlaczego uważasz, że implementacja jednowątkowa jest zła tak bardzo, Może być bardzo dobra. Dlatego bardzo dobrym przykładem jest invokeLater ze Swinga - ona jest *właśnie* po to, żeby dopasować się do jednowątkowej implementacji jakiegoś kawałka systemu. > Mam nadzieję, że przedstawiłem swój punkt widzenia :-) Jak najbardziej. -- Maciej Sobczak * http://www.inspirel.com
Technical Details
Message-ID:
<ab63e177-16fc-45e3-953c-ff5249749322@l36g2000yqb.googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!goblin1!goblin.stu.neva.ru!postnews.google.com!l36g2000yqb.googlegroups.com!not-for-mailReferences:
<4c3b4f20-3f62-4e54-9e3c-298e4ea6c3e5@g10g2000yqh.googlegroups.com> <ho5jpd$gir$1@news.onet.pl> <hog3hh$s2g$1@news.task.gda.pl> <343ca24e-feae-4bf0-ba6c-ea59a4884c35@x12g2000yqx.googlegroups.com> <hoigb3$lrn$1@news.task.gda.pl> <hoiitj$c8i$1@news.onet.pl> <hoinn7$61u$1@news.task.gda.pl> <a0c376f6-f4ed-42ac-a8f8-fa6f2081e22c@j21g2000yqh.googlegroups.com> <hojess$5ct$1@news.task.gda.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!goblin1!goblin.stu.neva.ru!postnews.google.com!l36g2000yqb.googlegroups.com!not-for-mail From: Maciej Sobczak <see.my.homepage@gmail.com> Newsgroups: pl.comp.lang.java Subject: Re: czy wątki mogą świadczyć usługi? Date: Sat, 27 Mar 2010 15:06:23 -0700 (PDT) Organization: http://groups.google.com Lines: 104 Message-ID: <ab63e177-16fc-45e3-953c-ff5249749322@l36g2000yqb.googlegroups.com> References: <4c3b4f20-3f62-4e54-9e3c-298e4ea6c3e5@g10g2000yqh.googlegroups.com> <ho5jpd$gir$1@news.onet.pl> <hog3hh$s2g$1@news.task.gda.pl> <343ca24e-feae-4bf0-ba6c-ea59a4884c35@x12g2000yqx.googlegroups.com> <hoigb3$lrn$1@news.task.gda.pl> <hoiitj$c8i$1@news.onet.pl> <hoinn7$61u$1@news.task.gda.pl> <a0c376f6-f4ed-42ac-a8f8-fa6f2081e22c@j21g2000yqh.googlegroups.com> <hojess$5ct$1@news.task.gda.pl> NNTP-Posting-Host: 85.1.23.86 Mime-Version: 1.0 X-Trace: posting.google.com 1269727583 29439 127.0.0.1 (27 Mar 2010 22:06:23 GMT) X-Complaints-To: groups-abuse@google.com NNTP-Posting-Date: Sat, 27 Mar 2010 22:06:23 +0000 (UTC) Complaints-To: groups-abuse@google.com Injection-Info: l36g2000yqb.googlegroups.com; posting-host=85.1.23.86; posting-account=bMuEOQoAAACUUr_ghL3RBIi5neBZ5w_S User-Agent: G2/1.0 X-HTTP-UserAgent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6,gzip(gfe) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit