Tuesday, March 3, 2015


File-1

Test.java

 
     import java.util.Scanner;

     public class Test {

         public static void main(String[] args) {
                Bucket bckt = new Bucket();
                Scanner s = new Scanner(System.in);
                System.out.print("How many elements do you want to add initialy ? :");
                int num = s.nextInt();
            
                //Fill bucket initially 
                for(int i=0;i<num;i++){
                    System.out.print("Enter element " +(i+1)+ " : ");
                    int val = s.nextInt();
                    bckt.insert(val);
                }
            
                bckt.display();  //display current bucket status
            
                DeleteThread delThread = new DeleteThread(bckt); //Call delete thread
                InsertThread insThread = new InsertThread(bckt); //Call insert thread
        }   
    }    

    


File-2

Bucket.java
 
   public class Bucket {
        static int MAX=100; //Capacity of bucket
        int bcktQueue[] = new int[100];  
        int front=-1, rear=0; //variable to access circular queue
        
        public Bucket(){
        }
 
        //Insertion operation in Circular Queue
        public void insert(int val){
            if(front == -1)
                front = 0;
            
            if(rear<MAX){
                bcktQueue[rear] = val;
                rear++;
            }
            else if(rear>=MAX && front>0){
                rear = 0;
                bcktQueue[rear] = val;
                rear++;
            }
            else if(rear==MAX-1 && front==MAX-1){
                rear = 0;
                bcktQueue[rear] = val;
                rear++;
            }
            else if((front==0 && rear==MAX-1) || (front>0 && rear==front)){
                System.out.println("......BUCKET OVERFLOW......");
            }
        }
        
        //Delete operation in Circular Queue
        public void delete(){
            if(front == -1){
                System.out.println(".......BUCKET IS EMPTY (Underflow).......");
            }
            else if(front == rear-1){
                System.out.println("Element " + bcktQueue[front] + " with index " + front + " is deleted");
                front = -1;
                rear = 0;
            }
            else if(front == MAX-1){
                System.out.println("Element " + bcktQueue[front] + " with index " + front + " is deleted");
                front = 0;
            }
            else{
                System.out.println("Element " + bcktQueue[front] + " with index " + front + " is deleted");
                front++;
            }
        }
        
        //Display current state of bucket
        public void display(){
            if(front == -1 && rear == 0){
                System.out.println("Bucket is EMPTY");
            }
            else if(front < rear){
                System.out.println("Current bucket is...");
                for(int i=front;i<=rear-1;i++){
                    System.out.println(bcktQueue[i]);
                }
            }
            else{
                System.out.println("Current bucket is...");
                for(int i=front;i<MAX;i++){
                    System.out.println(bcktQueue[i]);
                }
                for(int i=0;i<=rear;i++){
                    System.out.println(bcktQueue[i]);
                }
            }
        }
   }     
    
    


File-3

DeleteThread.java


	public class DeleteThread implements Runnable {
            Thread delThread;
            Bucket bckt1; //bckt1 is an instance of Bucket class
        
            public DeleteThread(){
            }
            public DeleteThread(Bucket bckt){
                this.bckt1 = bckt;  //create a reference
                delThread = new Thread(this);
                delThread.start();
            }
        
            @Override
            public void run() {
                try{
                    while(true){
                        bckt1.delete();
                        Thread.sleep(2000);
                    }
                }
                catch(Exception e){
                    e.printStackTrace();
                }
            }
        }



File-4

InsertThread.java


    import java.io.*;
    import java.util.*;

    public class InsertThread implements Runnable {
        Thread insThread;
    	Bucket bckt1;
		
	public InsertThread(){
    	}	
        public InsertThread(Bucket bckt){
	    bckt1 = bckt;
            insThread = new Thread(this);
	    insThread.start();
    	}		
		
    	@Override
	public void run() {
	    try{
	        String c = null;
    		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    		System.out.println("Press Y to insert elements into bucket");
	    	System.out.println("Press N to do not insert elements into bucket");
		System.out.print("Enter your choice:");
			
		try{
		    c = br.readLine();
    		}
	    	catch(Exception e){
		    e.printStackTrace();
		}
			
    		if(c.equals("y") || c.equals("Y")){
	    	    int num;
		    Scanner s = new Scanner(System.in);
		    System.out.println("How many elements you want to add in bucket ? :");
		    num = s.nextInt();
				
    		    for (int i=0;i<num;i++){
	    		int val;
		        System.out.print("Enter value of element :");
			val = s.nextInt();
			bckt1.insert(val);
        	    } 
 		    Thread.sleep(7000);
    		}
	    	else if(c.equals("n") || c.equals("N")){
		    try{
			Thread.sleep(5000);
		    }
    		    catch(Exception e){
	    		e.printStackTrace();
		    }
		}
    	}	
	catch(Exception e){
	   	e.printStackTrace();
    	}	
   }
}