मुझे एक बीन लिखने की ज़रूरत है जो इसे कितनी बार एक्सेस किया गया था इसके काउंटर के रूप में कार्य करेगा। जब एक ही समय में एक से अधिक अनुरोध पर विचार यह ठीक है:जेईई 6 @ आवेदन स्कोप्ड बीन और समरूपता
मुझे लगता है कि
@ApplicationScoped
class VisitsCounter {
private AtomicInteger counter;
@PostConstruct
public void construct() {
counter = new AtomicInteger(0);
}
public int visited() {
return counter.incrementAndGet();
}
}
मेरा प्रश्न की तरह AtomicInteger
साथ @ApplicationScoped
सेम का उपयोग करने का सोच रहा हूँ है? या मुझे @ConcurrencyManagement
और @Lock
एनोटेशन के साथ खेलने की ज़रूरत है? मुझे लगता है कि Atomic*
चाल चलाना चाहिए लेकिन मुझे यकीन नहीं है।
क्या यह वही लागू होता है जब मेरे पास फ़ील्ड के रूप में थ्रेड सुरक्षित संग्रह होते हैं? जैसे कहें कि मेरे पास
@ApplicationScoped
class ValuesHolder {
private List<String> values;
@PostConstruct
public void construct() {
values = Collections.synchronizedList(new LinkedList<String>());
}
public void insert(String value) {
values.add(value);
}
public String remove(String value) {
return values.remove(value);
}
}
ऑपरेशन वास्तव में थ्रेड-सुरक्षित हैं?
ऐसा कहा जाता है कि बीन की स्थिति में संशोधन होने पर समवर्ती एनोटेशन और ताले का उपयोग किया जाना चाहिए, लेकिन क्या होगा यदि मेरी सूची पहले से ही थ्रेड सुरक्षा का ख्याल रखती है?
लागू होने के रूप में, मुझे कोई समरूपता समस्या नहीं दिखाई देती है। – McDowell