Saturday, August 15, 2015

Java Custom CountDownLatch



Implementation of custom/own CountDownLatch in java - Detailed explanation with full program
A CountDownLatch is initialized with a given count .
count specifies the number of events that must occur before latch is released.
Every time a event happens count is reduced by 1. Once count reaches 0 latch is released.
class CountDownLatchCustom{
   private int count;
   /**
   * CountDownLatch is initialized with given count.
   * count specifies the number of events that must occur
   * before latch is released.
   */
   public CountDownLatchCustom(int count) {
          this.count=count;
   }
   /**
   * Causes the current thread to wait until  one of the following things happens-
                 - latch count has down to reached 0, or
                 - unless the thread is interrupted.
   */
   public synchronized void await() throws InterruptedException {
          //If count is greater than 0, thread waits.
          if(count>0)
                 this.wait();
   }
   /**
   * Reduces latch count by 1.
   * If count reaches 0, all waiting threads are released.
   */
   public synchronized void countDown() {
          //decrement the count by 1.
          count--;
         
          //If count is equal to 0, notify all waiting threads.
          if(count == 0)
                 this.notifyAll();
   }
  
}
Implementation of custom/own CountDownLatch in java - Detailed explanation with full program

Labels

Review (572) System Design (334) System Design - Review (198) Java (189) Coding (75) Interview-System Design (65) Interview (63) Book Notes (59) Coding - Review (59) to-do (45) Linux (43) Knowledge (39) Interview-Java (35) Knowledge - Review (32) Database (31) Design Patterns (31) Big Data (29) Product Architecture (28) MultiThread (27) Soft Skills (27) Concurrency (26) Cracking Code Interview (26) Miscs (25) Distributed (24) OOD Design (24) Google (23) Career (22) Interview - Review (21) Java - Code (21) Operating System (21) Interview Q&A (20) System Design - Practice (20) Tips (19) Algorithm (17) Company - Facebook (17) Security (17) How to Ace Interview (16) Brain Teaser (14) Linux - Shell (14) Redis (14) Testing (14) Tools (14) Code Quality (13) Search (13) Spark (13) Spring (13) Company - LinkedIn (12) How to (12) Interview-Database (12) Interview-Operating System (12) Solr (12) Architecture Principles (11) Resource (10) Amazon (9) Cache (9) Git (9) Interview - MultiThread (9) Scalability (9) Trouble Shooting (9) Web Dev (9) Architecture Model (8) Better Programmer (8) Cassandra (8) Company - Uber (8) Java67 (8) Math (8) OO Design principles (8) SOLID (8) Design (7) Interview Corner (7) JVM (7) Java Basics (7) Kafka (7) Mac (7) Machine Learning (7) NoSQL (7) C++ (6) Chrome (6) File System (6) Highscalability (6) How to Better (6) Network (6) Restful (6) CareerCup (5) Code Review (5) Hash (5) How to Interview (5) JDK Source Code (5) JavaScript (5) Leetcode (5) Must Known (5) Python (5)

Popular Posts