Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

import java.util.concurrent.Semaphore; public class ReadWriteLock { private int count = 0; public void readLock() throws InterruptedException { readSemaphore.acquire(); if(count == 0){ writeSemaphore.acquire(); } count=count+1; readSemaphore.release();

import java.util.concurrent.Semaphore; public class ReadWriteLock {

private int count = 0;

public void readLock() throws InterruptedException { readSemaphore.acquire(); if(count == 0){ writeSemaphore.acquire(); } count=count+1; readSemaphore.release(); }

public void readUnLock() throws InterruptedException { readSemaphore.acquire(); count=count-1; if(count == 0){ writeSemaphore.release(); } readSemaphore.release(); }

public void writeLock() throws InterruptedException { writeSemaphore.acquire(); }

public void writeUnlock(){ writeSemaphore.release(); } } Test code, not rigorous enough, just have a look import org.junit.Test;

public class ReadWriteLockTest { String test = In Thread 1;

@Test public void testRead() throws Exception { ReadWriteLock readWriteLock = new ReadWriteLock(); Thread thread1 = new Thread();

try { readWriteLock.readLock(); System.out.println(test); Thread.sleep(6000); readWriteLock.readUnLock(); } catch (Exception e) { e.printStackTrace(); }

Thread thread2 = new Thread(); try { readWriteLock.readLock(); test=In Thread 2; System.out.println(test); Thread.sleep(4000); readWriteLock.readUnLock(); } catch (Exception e) { e.printStackTrace(); }

Thread t3 = new Thread(); try { readWriteLock.writeLock(); test =In Thread 3; System.out.println(test); readWriteLock.writeUnlock(); } catch (Exception e) { e.printStackTrace(); } thread1.start(); thread2.start(); thread3.start();

thread3.join(); }

@Test public void testWrite() throws Exception { ReadWriteLock readWriteLock = new ReadWriteLock(); Thread thread1 = new Thread(); try { readWriteLock.readLock(); System.out.println(test); readWriteLock.readUnLock(); } catch (Exception e) { e.printStackTrace(); }

Thread thread2 = new Thread(); try { readWriteLock.readLock(); System.out.println(test); readWriteLock.readUnLock(); } catch (InterruptedException e) { e.printStackTrace(); }

Thread thread3 = new Thread(); try { readWriteLock.writeLock(); test = In Write Thread 3; System.out.println(test); Thread.sleep(2000); readWriteLock.writeUnlock(); } catch (InterruptedException e) { e.printStackTrace(); }

thread3.start(); thread1.start(); thread2.start();

thread2.join(); } }

A report should be written describing this code and the solution in detail. Can you write it orally?

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Database Driven Web Sites

Authors: Joline Morrison, Mike Morrison

2nd Edition

? 061906448X, 978-0619064488

More Books

Students also viewed these Databases questions

Question

What is the most important part of any HCM Project Map and why?

Answered: 1 week ago