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(); } } -Can you write the report describing this code?

Database System Concepts
7th Edition
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Chapter1: Introduction
Section: Chapter Questions
Problem 1PE
icon
Related questions
Question

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();
}
}

-Can you write the report describing this code?

.
Expert Solution
steps

Step by step

Solved in 2 steps

Blurred answer
Knowledge Booster
Avoiding deadlock
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
  • SEE MORE QUESTIONS
Recommended textbooks for you
Database System Concepts
Database System Concepts
Computer Science
ISBN:
9780078022159
Author:
Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:
McGraw-Hill Education
Starting Out with Python (4th Edition)
Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON
Digital Fundamentals (11th Edition)
Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON
C How to Program (8th Edition)
C How to Program (8th Edition)
Computer Science
ISBN:
9780133976892
Author:
Paul J. Deitel, Harvey Deitel
Publisher:
PEARSON
Database Systems: Design, Implementation, & Manag…
Database Systems: Design, Implementation, & Manag…
Computer Science
ISBN:
9781337627900
Author:
Carlos Coronel, Steven Morris
Publisher:
Cengage Learning
Programmable Logic Controllers
Programmable Logic Controllers
Computer Science
ISBN:
9780073373843
Author:
Frank D. Petruzella
Publisher:
McGraw-Hill Education