Java 时间过后如何终止方法
我在试着做一个售票系统。 客户可以选择的方法之一是makeOrder()。在这个方法中,他选择票的数量,然后我想给他10分钟来选择座位。如果他选择了它们并确认了顺序,那么方法应该结束,他可以再次从主菜单中选择选项。如果他在10分钟内没有选择座位,我想删除订单,通知他并显示主菜单。我不知道怎么做。谁能帮帮我吗Java 时间过后如何终止方法,java,time,terminate,Java,Time,Terminate,我在试着做一个售票系统。 客户可以选择的方法之一是makeOrder()。在这个方法中,他选择票的数量,然后我想给他10分钟来选择座位。如果他选择了它们并确认了顺序,那么方法应该结束,他可以再次从主菜单中选择选项。如果他在10分钟内没有选择座位,我想删除订单,通知他并显示主菜单。我不知道怎么做。谁能帮帮我吗 pseudocode public class MainMenu{ public void handle(String option) { switch (option) {
pseudocode
public class MainMenu{
public void handle(String option) {
switch (option) {
case "1": showScreenings(); break;
case "2": makeOrder(); break;
default: System.out.println("Unknown option"); break;
}
}
private void makeOrder(){
// customer selects number of tickets and then order is created
Order order = new Order()
// here I want to give a customer 10 minutes to select seats so I tried it with Timer
// but it deletes the order but still waiting for the input of the customer
Timer t = new java.util.Timer();
t.schedule( new java.util.TimerTask() {
@Override
public void run() {
if (order.getOrderedDateTime() == null){
try {
order.delete();
System.out.println("Time out");
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
t.cancel();
}
}, TimeUnit.MINUTES.toMillis(10));
//code to select seats
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String seats = br.readline() // if he doesnt select seats in 10 minutes I want to delete order
//reserve seats and confirm order
order.confirm();
}
}
我认为“但仍在等待客户输入”的意思是,您需要某种UI反馈,因此您可以通过多种方式处理此问题,其中一种方式是,您可以显示一个对话框,通知用户订单取消,并通过以下方式刷新活动(如果可能):
finish();
startActivity(getIntent());
据我所知,您需要等待10分钟,等待用户操作。如果他/她在10分钟内采取行动,则您继续确认订单 如果用户未能在10分钟内采取行动,您希望删除订单 您可以尝试在特定时间等待线程完成的Future
System.out.println("Wait 10 seconds to get user input");
StringBuilder stringBuilder = new StringBuilder();
ExecutorService executor = Executors.newSingleThreadExecutor();
Future<?> future = executor.submit(()->{
//code to select seats
System.out.println("Enter Seat No: ");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
try {
stringBuilder.append(br.readLine());
} catch (IOException e) {
e.printStackTrace();
}
});
try {
future.get(10, TimeUnit.SECONDS);
System.out.println("Seat selected. Let's confirm the order");
} catch (TimeoutException | ExecutionException e) {
future.cancel(true);
System.out.println("Time out Delete oder");
// delete order
} finally {
executor.shutdownNow();
}
System.out.println(“等待10秒以获取用户输入”);
StringBuilder StringBuilder=新的StringBuilder();
ExecutorService executor=Executors.newSingleThreadExecutor();
未来=执行者。提交(()->{
//选择座位的代码
System.out.println(“输入座位号”);
BufferedReader br=新的BufferedReader(新的InputStreamReader(System.in));
试一试{
追加(br.readLine());
}捕获(IOE异常){
e、 printStackTrace();
}
});
试一试{
future.get(10,时间单位:秒);
System.out.println(“已选择座位,让我们确认订单”);
}catch(TimeoutException | ExecutionException e){
future.cancel(true);
System.out.println(“超时删除顺序”);
//删除订单
}最后{
执行者。关机现在();
}
这有什么关系?是的,我在找类似的东西。谢谢!