15. februar 2005 - 12:12Der er
12 kommentarer og 1 løsning
Java threads.
Hejsa.
Jeg har lavet en monitor i java der kan skrive/læse fra en database. Det virker fint nok. Nu vil jeg gerne have det sådan at en thread kan sige at den vil vente på at en given værdi bliver skrevet i databasen og så fortsætte når den er skrevet.
Hvordan gør jeg dette uden at låse læse metoden så de andre thread ikke kan komme til?
Inde i læse tråden skal jeg oprette en ny tråd hvis information ikke er der, og i denne lave en semafor som jeg "releaser" hver gang skrive tråden har skrevet en værdi?
Ellers må du lige give lidt kode så jeg kan forstå hvad du mener :)
Et andet alternativ kunne vel være at oprette en database Broker (med tråd sikre metoder til skrive og læsning af database) og benytte oberver pattern. Så kan tråden vel bare vente (yield()) indtil den er blivet notified af brokeren om at det rigtige data er blevet skrevet i databasen.
jo nøjaktig (eller rettere én semafor kø), men det er bare fordi at java har jo observer pattern'et indbygget i sit klasse bib. så var det måske en nemmere løsning (semaforen skal du selv "bygge")? Og ved en semafor så kaldes den næste tråd (én tråd ad gange), hvorimod en observer så kan alle trådende begynde at køre sammentidigt (de er vel alle læse tråde, så et evt. readers-writers problem skulle ikke opstå)....
Undskyld, en tråd kan også starte alle trådende, inde i semafor køen, op samtidigt... så valget ligger vel mellem om man vil bruge observer pattern eller implementere sin egen semafor... (De kan begge det samme).
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.