[英]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.