Return-Path: Delivered-To: apmail-jakarta-commons-user-archive@www.apache.org Received: (qmail 99798 invoked from network); 6 Jul 2005 13:57:04 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 6 Jul 2005 13:57:04 -0000 Received: (qmail 11642 invoked by uid 500); 6 Jul 2005 13:56:39 -0000 Delivered-To: apmail-jakarta-commons-user-archive@jakarta.apache.org Received: (qmail 11586 invoked by uid 500); 6 Jul 2005 13:56:39 -0000 Mailing-List: contact commons-user-help@jakarta.apache.org; run by ezmlm Precedence: bulk List-Unsubscribe: List-Help: List-Post: List-Id: "Jakarta Commons Users List" Reply-To: "Jakarta Commons Users List" Delivered-To: mailing list commons-user@jakarta.apache.org Received: (qmail 11565 invoked by uid 99); 6 Jul 2005 13:56:38 -0000 Received: from asf.osuosl.org (HELO asf.osuosl.org) (140.211.166.49) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 06 Jul 2005 06:56:38 -0700 X-ASF-Spam-Status: No, hits=0.5 required=10.0 tests=FROM_ENDS_IN_NUMS X-Spam-Check-By: apache.org Received-SPF: pass (asf.osuosl.org: local policy) Received: from [128.253.83.141] (HELO authusersmtp.mail.cornell.edu) (128.253.83.141) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 06 Jul 2005 06:56:38 -0700 Received: from [128.253.57.77] (aeolus.cit.cornell.edu [128.253.57.77]) (authenticated bits=0) by authusersmtp.mail.cornell.edu (8.13.1/8.12.10) with ESMTP id j66E0QBn011576 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT) for ; Wed, 6 Jul 2005 10:00:29 -0400 (EDT) Message-ID: <42CBE31F.700@cornell.edu> Date: Wed, 06 Jul 2005 09:56:47 -0400 From: Aaron Hamid User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Jakarta Commons Users List Subject: Re: Transaction API, ReadWriteLock References: <9da4f452050705234479b6456c@mail.gmail.com> <9da4f45205070606382914054e@mail.gmail.com> In-Reply-To: <9da4f45205070606382914054e@mail.gmail.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N Is this true? It was my impression, have first written such a class, and then finding and skimming the javadoc for [ReadWrite]LockManager, and particularly 'getLock' and 'createLock', that lock singletons would be automatically created and managed. Otherwise the developer must write a lot of boilerplate code for keeping a singleton map of locks. Surely only the 'resourceId' must be the same, and not the actual ReadWriteLock reference? LockManager: "Encapsulates creation, removal, and retrieval of locks. Each resource can have at most a single lock." Aaron Oliver Zeigermann wrote: > Ooops, sorry, you are right. Not only the resource Id, but the lock > *itself* must be the same in both threads. > > Doing it this way: > > final ReadWriteLock fileLock = new ReadWriteLock("Huhu", loggerFacade); > Runnable run = new Runnable() { > > public void run() { > > try { > System.out.println("before acquiring a lock " > + Thread.currentThread()); > boolean result = fileLock.acquireWrite(Thread > .currentThread(), Long.MAX_VALUE); > System.out.println("lock result: " + result + " " > + Thread.currentThread()); > Thread.sleep(20000); > System.out.println("after sleeping " > + Thread.currentThread()); > } catch (InterruptedException e) { > e.printStackTrace(System.err); > > } finally { > fileLock.release(Thread.currentThread()); > } > } > > }; > > Thread t1 = new Thread(run, "Thread1"); > Thread t2 = new Thread(run, "Thread2"); > t1.start(); > try { > Thread.sleep(1000); > } catch (InterruptedException e) { > } > t2.start(); > > > works fine for me. > > HTH > > Oliver > > On 7/6/05, LeRoy.Yanta@securian.com wrote: > >> >> >> >> >>Oliver, >> >>I tried your suggestion by changing my ReadWriteLock statement to >> >>ReadWriteLock fileLock = new ReadWriteLock("c:/logRec.txt",loggerFacade); >> >>However, I received the same results as when I used new File(..). >> >>LeRoy >> >> >> >> >> >> >> Oliver Zeigermann >> > n@gmail.com> To >> Jakarta Commons Users List >> 07/06/2005 01:44 >> AM cc >> >> Subject >> Please respond to Re: Transaction API, ReadWriteLock >> "Jakarta Commons >> Users List" >> > arta.apache.org> >> >> >> >> >> >> >>Most likely your problem ist that new File(..) creates different >>objects in each thread. I would try using something like the path to >>the file as String. >> >>Oliver >> >>On 7/5/05, LeRoy.Yanta@securian.com wrote: >> >>> >>> >>> >>>I'm trying to use the ReadWriteLock class to acquire a write lock on a >> >>file >> >>>in a servlet. When I generate multiple threads of the servlet using a >> >>WTE >> >>>5.1 server in the WSAD 5.1 IDE, I'm not able to get ReadWriteLock to >> >>block >> >>>other servlet threads after the first servlet thread obtains the lock. >> >>I'm >> >>>using two IE browser windows to generate the two servlet threads. Below >> >>is >> >>>ReadWriteLock code I have in the servlet followed by the >> >>System.out.println >> >>>statements that are generated in the server log file during my test. >>> >>>ReadWriteLock fileLock = new ReadWriteLock(new File(c:/logRec.txt, >>>loggerFacade); >>>try { >>> System.out.println("before acquiring a lock " + >>>Thread.currentThread()); >>> boolean result = >>>fileLock.acquireWrite(Thread.currentThread(),Long.MAX_VALUE); >>> System.out.println("lock result: " + result + " " + >>>Thread.currentThread()); >>> Thread.sleep(20000); >>> System.out.println("after sleeping " + Thread.currentThread()); >>> FileWriter recFile = new FileWriter(c:/logRec.txt, true); >>> recFile.write("text from testFileTran"); >>> recFile.close(); >>>} catch (InterruptedException e) { >>> e.printStackTrace(System.err); >>> >>>} catch (IOException e) { >>> e.printStackTrace(System.err); >>> >>>} finally { >>> fileLock.release(Thread.currentThread()); >>>} >>> >>>[7/5/05 8:26:03:326 CDT] 7c1477e SystemOut O before acquiring a lock >>>Thread[Servlet.Engine.Transports : 0,5,main] >>>[7/5/05 8:26:03:326 CDT] 7c1477e SystemOut O lock result: true >>>Thread[Servlet.Engine.Transports : 0,5,main] >>>[7/5/05 8:26:08:384 CDT] 24c3477d SystemOut O before acquiring a lock >>>Thread[Servlet.Engine.Transports : 1,5,main] >>>[7/5/05 8:26:08:384 CDT] 24c3477d SystemOut O lock result: true >>>Thread[Servlet.Engine.Transports : 1,5,main] >>>[7/5/05 8:26:23:335 CDT] 7c1477e SystemOut O after sleeping >>>Thread[Servlet.Engine.Transports : 0,5,main] >>>[7/5/05 8:26:28:382 CDT] 24c3477d SystemOut O after sleeping >>>Thread[Servlet.Engine.Transports : 1,5,main] >>> >>> >>>>From reviewing the Transaction documentation and mailing list archives, >> >>I'm >> >>>not able to determine what I'm doing wrong. >>> >>> >>>--------------------------------------------------------------------- >>>To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org >>>For additional commands, e-mail: commons-user-help@jakarta.apache.org >>> >>> >> >>--------------------------------------------------------------------- >>To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org >>For additional commands, e-mail: commons-user-help@jakarta.apache.org >> >> >> >> >>--------------------------------------------------------------------- >>To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org >>For additional commands, e-mail: commons-user-help@jakarta.apache.org >> >> > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org > For additional commands, e-mail: commons-user-help@jakarta.apache.org > --------------------------------------------------------------------- To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org For additional commands, e-mail: commons-user-help@jakarta.apache.org