Advertisement
Guest User

Untitled

a guest
Mar 31st, 2020
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.84 KB | None | 0 0
  1. class Exercise {
  2.  
  3.     public static void main(String args[]) {
  4.         Deadlock deadlock = new Deadlock();
  5.         try {
  6.             deadlock.test();
  7.         } catch (InterruptedException ie) {
  8.         }
  9.     }
  10. }
  11.  
  12. class Deadlock {
  13.  
  14.     private int counter = 0;
  15.     private Object mutex1 = new Object();
  16.     private Object mutex2 = new Object();
  17.  
  18.     Runnable incrementer = new Runnable() {
  19.  
  20.         @Override
  21.         public void run() {
  22.             try {
  23.                 for (int i = 0; i < 100; i++) {
  24.                     increment();
  25.                     System.out.println("Incrementing " + i);
  26.                 }
  27.             } catch (InterruptedException ie) {
  28.             }
  29.         }
  30.     };
  31.  
  32.     Runnable decrementer = new Runnable() {
  33.  
  34.         @Override
  35.         public void run() {
  36.             try {
  37.                 for (int i = 0; i < 100; i++) {
  38.                     decrement();
  39.                     System.out.println("Decrementing " + i);
  40.                 }
  41.             } catch (InterruptedException ie) {
  42.             }
  43.  
  44.         }
  45.     };
  46.  
  47.     public void test() throws InterruptedException {
  48.  
  49.         Thread thread1 = new Thread(incrementer);
  50.         Thread thread2 = new Thread(decrementer);
  51.  
  52.         thread1.start();
  53.         Thread.sleep(10);
  54.         thread2.start();
  55.  
  56.         thread1.join();
  57.         thread2.join();
  58.  
  59.         System.out.println("Counter value : " + counter);
  60.     }
  61.  
  62.     void increment() throws InterruptedException {
  63.         synchronized (Answer) {
  64.             Thread.sleep(10);
  65.  
  66.             synchronized (Answer) {
  67.                 counter++;
  68.             }
  69.         }
  70.     }
  71.  
  72.     void decrement() throws InterruptedException {
  73.         synchronized (Answer) {
  74.             Thread.sleep(10);
  75.  
  76.             synchronized (Answer) {
  77.                 counter--;
  78.             }
  79.         }
  80.     }
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement