1 7 package javax.swing.text; 8 9 import java.util.ArrayList ; 10 import java.util.List ; 11 12 25 class SegmentCache { 26 29 private static SegmentCache sharedCache = new SegmentCache (); 30 31 34 private List segments; 35 36 37 40 public static SegmentCache getSharedInstance() { 41 return sharedCache; 42 } 43 44 48 public static Segment getSharedSegment() { 49 return getSharedInstance().getSegment(); 50 } 51 52 56 public static void releaseSharedSegment(Segment segment) { 57 getSharedInstance().releaseSegment(segment); 58 } 59 60 61 62 65 public SegmentCache() { 66 segments = new ArrayList (11); 67 } 68 69 73 public Segment getSegment() { 74 synchronized(this) { 75 int size = segments.size(); 76 77 if (size > 0) { 78 return (Segment )segments.remove(size - 1); 79 } 80 } 81 return new CachedSegment(); 82 } 83 84 93 public void releaseSegment(Segment segment) { 94 if (segment instanceof CachedSegment) { 95 synchronized(this) { 96 segment.array = null; 97 segment.count = 0; 98 segments.add(segment); 99 } 100 } 101 } 102 103 104 108 private static class CachedSegment extends Segment { 109 } 110 } 111 | Popular Tags |