阻止和取消阻止Java方法

阻止和取消阻止Java方法,java,Java,我有以下资料: 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");

我有以下资料:

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;
        }
    }
我正在寻找的是一个方法,如果我选择sleep(),它将禁用开关的前两个选项(sing()和eat()),但如果我选择wakeUp(),它将再次启用这两个选项

我知道倒计时锁可能会工作,但我不知道如何正确使用它

有关倒计时闩锁的参考:


谢谢。

只要记住布尔变量中的当前状态(休眠、唤醒)

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;
        }
    }

这超出了我的理解,你为什么要研究CountDownLatch的原因。@peter.petrov我很确定OP不知道“阻塞”这个词的意思。@chrylis我想我应该使用启用和禁用,而不是阻塞或取消阻塞