繁体   English   中英

阻止和取消阻止Java方法

[英]Block and unblock a method 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");
            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(),将再次启用这两个选项。

我知道CountDownLatch可能有效,但是我不确定如何正确使用它。

CountDownLatch参考: 在Java中实现阻塞函数调用

谢谢。

只需记住布尔变量中的当前状态(睡眠,唤醒)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM