-
Data: 2009-07-27 10:09:38
Temat: Re: Opowiadanie o GC
Od: Michal Kleczek <k...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]Michal Kleczek wrote:
[ciach]
>
> Nie trzeba watku skanujacego - wystarczy usuwajacy. Od skanowania jest
> java.lang.ref.ReferenceQueue
>
Sprobuj moze jakos tak:
class IdMap<ID, ITEM> {
private final Map<Reference<?>, ID> refToIdMap = new HashMap();
private final Map<ID, Reference<ITEM>> idToRefMap = new HashMap();
private final ReferenceQueue<ITEM> referenceQueue = new ReferenceQueue();
//needs to be static so that we do not keep
//reference to the parent IdMap
private static class Remover<S, T> implements Runnable {
//keep just a (weak) reference to parent map
//so that we know when to finish removal
private final Reference<IdMap<S, T>> idMapRef;
private ReferenceQueue<T> getRefQueue() {
IdMap<S, T> idMap = idMapRef.get();
return idMap != null ? idMap.referenceQueue : null;
}
public Remover(IdMap<S, T> idMap) {
this.idMapRef = new WeakReference<IdMap<S, T>>(idMap);
}
@Override
public void run() {
try {
ReferenceQueue<T> referenceQueue = getRefQueue();
while (referenceQueue != null) {
//wait for next reference to remove
final Reference<? extends T> itemRef = referenceQueue.remove();
final IdMap<S, T> idMap = idMapRef.get();
if (idMap != null) {
idMap.remove(itemRef);
}
referenceQueue = getRefQueue();
}
}
catch (InterruptedException e) {
//ignore and return
}
}
}
private synchronized void remove(Reference<?> ref) {
final ID id = refToIdMap.remove(ref);
idToRefMap.remove(id);
}
public IdMap() {
new Thread(new Remover(this)).start();
}
public ITEM get(ID id) {
final Reference<ITEM> itemRef = idToRefMap.get(id);
return itemRef != null ? itemRef.get() : null;
}
public synchronized void put(ID id, ITEM item) {
final Reference<ITEM> itemRef = new WeakReference<ITEM>(item);
idToRefMap.put(id, itemRef);
refToIdMap.put(itemRef, id);
}
}
--
Michal
Następne wpisy z tego wątku
- 27.07.09 10:11 Krzysiek Kowaliczek
- 27.07.09 10:16 Michal Kleczek
- 27.07.09 10:19 Michal Kleczek
- 27.07.09 10:21 Michal Kleczek
- 27.07.09 10:24 Sebastian Nibisz
- 27.07.09 10:27 Krzysiek Kowaliczek
- 27.07.09 10:31 Michal Kleczek
- 27.07.09 10:44 Krzysiek Kowaliczek
- 27.07.09 10:54 Michal Kleczek
- 27.07.09 11:19 Krzysiek Kowaliczek
- 27.07.09 11:22 Michal Kleczek
- 27.07.09 11:29 Krzysiek Kowaliczek
- 27.07.09 11:30 Maciej Sobczak
- 27.07.09 11:32 Michal Kleczek
- 27.07.09 11:37 Maciej Sobczak
Najnowsze wątki z tej grupy
- A Szwajcarzy kombinują tak: FinalSpark grows human neurons from stem cells and connects them to electrode arrays
- Re: Najgorszy język programowania
- NOWY: 2025-09-29 Alg., Strukt. Danych i Tech. Prog. - komentarz.pdf
- Na grupie comp.os.linux.advocacy CrudeSausage twierdzi, że Micro$lop używa SI do szyfrowania formatu dok. XML
- Błąd w Sofcie Powodem Wymiany 3 Duńskich Fregat Typu Iver Huitfeldt
- Grok zaczął nadużywać wulgaryzmów i wprost obrażać niektóre znane osoby
- Can you activate BMW 48V 10Ah Li-Ion battery, connecting to CAN-USB laptop interface ?
- We Wrocławiu ruszyła Odra 5, pierwszy w Polsce komputer kwantowy z nadprzewodzącymi kubitami
- Ada-Europe - AEiC 2025 early registration deadline imminent
- John Carmack twierdzi, że gdyby gry były optymalizowane, to wystarczyły by stare kompy
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2025
- Linuks od wer. 6.15 przestanie wspierać procesory 486 i będzie wymagać min. Pentium
- ,,Polski przemysł jest w stanie agonalnym" - podkreślił dobitnie, wskazując na brak zamówień.
- Rewolucja w debugowaniu!!! SI analizuje zrzuty pamięci systemu M$ Windows!!!
- Brednie w wiki - hasło Dehomag
Najnowsze wątki
- 2025-12-29 Greta Thunberg aresztowana w Londynie za wsparcie zdelegalizowanej grupy [Palestine Action - przyp. JMJ]
- 2025-12-29 Sarkozy
- 2025-12-29 Czujnik
- 2025-12-29 Warszawa => Konsultant Microsoft Dynamics AX/365 SCM Consultant - Serv
- 2025-12-29 Warszawa => IT Recruiter <=
- 2025-12-29 Warszawa => Solution Architect (Workday) - Legal Systems <=
- 2025-12-29 Warszawa => Microsoft Dynamics 365 Finance Consultant <=
- 2025-12-29 Warszawa => Senior Java Developer <=
- 2025-12-29 Katowice => Key Account Manager <=
- 2025-12-29 MON nabyło Hutę Częstochowa. "Historyczne znaczenie"
- 2025-12-28 Czwarta doba strajku na głębokości 500 metrów. "Ministerstwo robi sobie z nas jaja"
- 2025-12-29 Kolejny kraj [WB - przyp. JMJ] zakazuje chowu klatkowego. W Polsce żyje tak 40 mln kur
- 2025-12-29 MON nabyło Hutę Częstochowa. "Historyczne znaczenie"
- 2025-12-28 Norwegia kontra media społecznościowe
- 2025-12-28 PREZENTY OD MINISTRA FINANSÓW. SKĄD PIENIĄDZE?




5 Najlepszych Programów do Księgowości w Chmurze - Ranking i Porównanie [2025]