java - Wait for read lock? -


how can wait lock before checking it?

basically, want cache list in private variable. populate list every once , while, other 99.999999% of time, want read it, don't want lock every time read.

public class someservlet extends customservlet {      private static object locker;     private static list<string> somelist;      // moderately heavy populate, not called     private void populatelist() {         // lock         somelist.clear();         somelist.addall(gettheliststuff());         // unlock     }      public void dogetlikemethod(httpservletrequest req, httpservletresponse res) {          // looking @ sort of method check lock           // , wait it, preferably timeout           if(!locker.islocked(1000) && somelist.isempty()) {              populatelist();          }          // lock present far less 0.01% of time checked     }      public void updatesomelist() {        populatelist(); // populate list other reason     } } 

this in servlet , not using public framework. our lead protective of adding libraries, i'd avoid if @ possible. have apache , java.util stuff. i'm not sure if should use sort of sychronized, readwritelock, reentreadwritelock, or lock.

i think explained enough. let me know if need clarify anything. may approaching entirely wrong.

use java.util.concurrent.locks.reentrantreadwritelock. multiple threads can hold read lock @ time, long no write going on, satisfies efficiency desires. single thread can hold write lock @ time, , when no threads hold read lock, ensures consistency between writes , reads. want set fairness on, write threads able writes when there constant contention reads.


Comments

Popular posts from this blog

javascript - Chart.js (Radar Chart) different scaleLineColor for each scaleLine -

apache - Error with PHP mail(): Multiple or malformed newlines found in additional_header -

java - Android – MapFragment overlay button shadow, just like MyLocation button -