[ Sale_123 @ 18.02.2009. 00:23 ] @
Pozdrav svima. Trenutno pravim jedan program, pa bih htio par savjeta od iskusnijih korisnika. Naime, u mom programu trenutno postoje 3 vazne komponente, DrawingViewer, Model i Controler. Model se sastoji od Slojeva, Sloj od Grupa, Grupa od Profila, a Profile od Oblika (Shape: Line, Arc, Ellipse) Svaka ova klasa (Model, Layer, Group, Profile) implementira Collection interface. DrawingViewer implementira interface Observer i na svaku promjenu u modelu, ponovo iscrtava model. E sad, u jednom trenutku je potrebno izvrsiti provjeru ispravnosti modela, koje moze da traje i do nekoliko sekundi. Pri tome aplikacija mora da odgovora na akcije korisnika i da omoguci korisniku dodavanje novih Slojeva, Grupa, Profila itd. Razmisljao sam da tu provjeru uradim u jednoj posebnoj niti, medjutim ostaje sledeci problem: Ako ta nova nit koja vrsi provjeru modela zakljuca model, tada on nece biti dostupan komponenti DrawingViewer i uopste aplikaciji jer ce ta komponenta koja se vrti na event dispatching thread pokusati isto taj model da zakljuca i onda ce morati da ceka dok prva nit na kojoj se vrsi provjera modela ne zavrsi posao, iz cega proizilazi da ce se program ponasati isto kao da sam provjeru vrsio i na EDT. Kakvu strategiju ovde primjeniti da bi se izbjeglo "gladovanje" ED niti? |