W4rlord08
W4rlord08

Reputation: 9

Block and unblock a method Java

I have the following:

public static void menu () throws java.io.IOException{
        int option;
        do{
            out.println("1. Sing");
            out.println("2. Eat");
            out.println("3. Sleep");
            out.println("4. Wake up");
            out.println("6. Out");
            option=Integer.parseInt(in.readLine());
            selOption(option);
        } while (opcion != 6);
    }

public static void selOption (int option) throws java.io.IOException {
        switch (option){
            case 1:
                objectVariable.sing();
                break;
            case 2:
                eat();
                break;
            case 3:
                sleep();
                break;
            case 4:
                wakeUp();
                break;
            default:
                break;
        }
    }

what i'm looking is a method that, if I select sleep(), will disable the first two options of the switch (sing() and eat()), but if I select wakeUp(), will enable the two options again.

I know that CountDownLatch might work, but I'm not sure how to use it properly.

Reference on CountDownLatch: Implement a blocking function call in Java

Thank you.

Upvotes: 1

Views: 1066

Answers (1)

Marcin Krupa
Marcin Krupa

Reputation: 497

Just remember the current state (asleep, awake) in a boolean variable

public static void menu() {
        int option;
        boolean sleeping = false;
        do{
            out.println("1. Sing");
            out.println("2. Eat");
            out.println("3. Sleep");
            out.println("4. Wake up");
            out.println("6. Out");
            option=Integer.parseInt(in.readLine());
            sleeping = selOption(option, sleeping);
        } while (option != 6);
    }

public static boolean selOption (int option, boolean sleeping) {
        switch (option){
            case 1:
                if(!sleeping) objectVariable.sing();
                return sleeping;
            case 2:
                if(!sleeping) eat();
                return sleeping;
            case 3:
                sleep();
                return true;
            case 4:
                wakeUp();
                return false;
            default:
                return sleeping;
        }
    }

Upvotes: 2

Related Questions