Article View: pl.comp.lang.java
Article #149846Re: czy wątki mogą świadczyć usługi?
From: andrzej salwicki
Date: Mon, 22 Mar 2010 15:22
Date: Mon, 22 Mar 2010 15:22
76 lines
3908 bytes
3908 bytes
Dziękuję za sugestie (nullpointer i Waldek Kot)
Te rozwiązania nie satysfakcjonują.
Spooler ma zgadzać się na świadczenie: usługę typu drukuj przez
prawie cały czas, z wyjątkiem chwili gdy
właśnie wykonuje tę usługę. Nie chcemy zgubić żadnego zgłoszenia i
nie dopuszczamy do bałaganu w kolejce zgłoszeń.
A więc drukuj ma być w zasadzie metodą publiczną, ale czasami ma być
schowana, private.
Ponadto, wywołanie drukuj z zewnątrz ma zawieszać działanie spoolera.
Czyli znowu dobrze by było by drukuj był private - na chwilę.
To potrafię zrobić.
Jak jednak doprowadzic do przerwania spoolera wtedy gdy jakiś klient
wzywa go do wykonania metody drukuj - nie wcześniej ani póżniej?
Jeśli ktos to wie...
On 21 Mar, 18:44, andrzej salwicki <salwi...@gmail.com> wrote:
> Obawiam się, że pytanie jest zbyt trudne.
>
> Rozważmy klasę Spooler, klasę Klient oraz trzy wątki s, a, b.
>
> class Spooler extends Thread {
> synchronized void drukuj (Plik f) { }
> void run ( ) { tu w kółko sprawdzamy czy jest cos do drukowania i
> drukujemy }
>
> }
>
> Spooler s;
> s.start()
>
> class Klient extends Thread {
>
> void run (0 {
> ....
> call s.drukuj(...);
> ....
> }
>
> }
>
> Klient a,b;
> a= new Klient(Spooler s. ...); a.start();
> b= new Klient(Spooler s, ...); b.start();
>
> Taki lub podobny schemat chcemy zrealizować. Jak to będzie działać/
>
> =============================================================
>
> On 21 Mar, 18:07, nullpointer <i....@nie.dojdzie.pl> wrote:
>
> > W dniu 2010-03-21 17:29, andrzej salwicki pisze:
>
> > > Czy mo na w efektywny spos b zaprogramowa w tek A tak by pe ni swoje
> > > zadanie i r wnocze nie by got w wiadczyc us ugi? Dok adniej, czy
> > > inne w tki: B, C, ... mog wywo ywa metody publiczne, synchronized
> > > w tku A, powoduj c chwilowe przerwanie akcji w tku A,[ciach]
>
> > Obawiam si , e mylisz w tek z obiektem.
> > W tek B mo e wykona metod x() na rzecz obiektu A (kt ry mo e, ale nie
> > musi by instancj klasy pochodnej po Thread), ale to wywo anie wykona
> > si w w tku B, a nie A.
>
> > Je li chcesz aby w tek B "zleca " zadania do wykonania w tkowi A, to
> > proponuj zainteresowa si interfejsem BlokingQueue i implementuj cymi
> > go klasami, albo kolejkami w og le. No i wzorcami takimi jak Producer i
> > Consumer.
>
> > --
> > np
Technical Details
Message-ID:
<09d6aeeb-cc24-4294-a2d3-635311ec2e68@r27g2000yqn.googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!nf1.ipartners.pl!ipartners.pl!news.nask.pl!news.nask.org.pl!newsfeed00.sul.t-online.de!t-online.de!border2.nntp.dca.giganews.com!nntp.giganews.com!postnews.google.com!r27g2000yqn.googlegroups.com!not-for-mailReferences:
<4c3b4f20-3f62-4e54-9e3c-298e4ea6c3e5@g10g2000yqh.googlegroups.com> <ho5jpd$gir$1@news.onet.pl> <e0ba4244-1fee-4d67-b918-f4cb27360f2f@q21g2000yqm.googlegroups.com>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!nf1.ipartners.pl!ipartners.pl!news.nask.pl!news.nask.org.pl!newsfeed00.sul.t-online.de!t-online.de!border2.nntp.dca.giganews.com!nntp.giganews.com!postnews.google.com!r27g2000yqn.googlegroups.com!not-for-mail From: andrzej salwicki <salwicki@gmail.com> Newsgroups: pl.comp.lang.java Subject: Re: czy wątki mogą świadczyć usługi? Date: Mon, 22 Mar 2010 08:22:01 -0700 (PDT) Organization: http://groups.google.com Lines: 84 Message-ID: <09d6aeeb-cc24-4294-a2d3-635311ec2e68@r27g2000yqn.googlegroups.com> References: <4c3b4f20-3f62-4e54-9e3c-298e4ea6c3e5@g10g2000yqh.googlegroups.com> <ho5jpd$gir$1@news.onet.pl> <e0ba4244-1fee-4d67-b918-f4cb27360f2f@q21g2000yqm.googlegroups.com> NNTP-Posting-Host: 83.24.115.214 Mime-Version: 1.0 X-Trace: posting.google.com 1269271321 9824 127.0.0.1 (22 Mar 2010 15:22:01 GMT) X-Complaints-To: groups-abuse@google.com NNTP-Posting-Date: Mon, 22 Mar 2010 15:22:01 +0000 (UTC) Complaints-To: groups-abuse@google.com Injection-Info: r27g2000yqn.googlegroups.com; posting-host=83.24.115.214; posting-account=mOAt8AoAAAD-4GmZpFvOq4UfjMYbZdfY User-Agent: G2/1.0 X-HTTP-UserAgent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.10) Gecko/2009042523 Ubuntu/9.04 (jaunty) Firefox/3.0.10,gzip(gfe),gzip(gfe) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit