Skip to main content

Print odd even number using 2 threads

 


So we have 2 thread, one will be printing odd numbers and others will be printing even number. We have to print them in a synchronized fashion. 


class Lock {

    Boolean isOdd;

    Lock(Boolean odd) {

        this.isOdd = odd;

    }

    synchronized void print(Integer number) {

        Boolean numberEven = number %2 == 0;

        while (isOdd == numberEven) {

            try {

                wait();

            } catch( InterruptedException e) {

               Thread.currentThread().interrupt();

            }

        }

        System.out.println(number);

        isOdd = !isOdd;

        notify();

    }

}


class PrintThread extends Thread{


  Integer limit; 

  Integer value;

  Lock lock;

  PrintThread( Integer start,Integer limit, Lock lock) {

     this.value = start;

     this.limit = limit;

this.lock = lock;

  } 

  

  public void run() {

   while( value < limit ) {

           lock.print(value);

   value +=2;

   

    }

  }

}


public class Test {

 static public void main(String args[]) {

 

    Lock lock = new Lock(false);

PrintThread oddThread = new PrintThread(1,10, lock);

PrintThread evenThread = new PrintThread(0,10, lock);

evenThread.start();

oddThread.start();

  }

}

Comments

Popular posts from this blog

Car Parking Problem

There is n parking slots and n-1 car already parked. Lets say car parked with initial arrangement and we want to make the car to be parked to some other arrangement. Lets say n = 5, inital = free, 3, 4, 1, 2 desired = 1, free, 2, 4 ,3 Give an algorithm with minimum steps needed to get desired arrangement. Told by one of my friend and after a lot of search i really got a nice solution. I will post solution in comment part

JDBC connection factory

  Class ConnectionManager {   Queue<Connection> availableConnection;   List <Connection> allotedConnection; ConnectionManager( Integer noOfConnections, ConnectionPoperties props ) {     //Create the no of connection objects and assign to avaialbleConnection } Conection getConnection() {     syncronized( this.class) { if (availableConnection.isEmpty() ) {          throw ConnectionExhausted();       }       conn = availableCOnnection.poll();       alottledConectiion.add(conn); } return conn; } synchronized Conection releaseConnection(Connection conn) {        alottedconnection.remove(conn);    avaialbleConection.add(conn); }

Median of Five Numbers

U have 5 NOs , X1,X2,X3,X4,X5 With minimum no. of comparisons we have to find a median. SWAP(X,Y) function is available to u . I have a answer of six comparisons and eight swaps....wait for people to find out by themselves.