当前位置: 首页 > 知识库问答 >
问题:

如何限制用户在一段时间内与程序交互?

邹星火
2023-03-14

我试图限制用户在一段时间内与程序交互,但遗憾的是,没有成功。我试过使用线程。睡眠,但一旦睡眠动作结束,用户的输入就会跟上并继续执行,直到完成。

例如,如果我使用下面的代码,程序将按上述方式运行:它将在提供的时间段(1,5s)内睡眠,然后用户的操作将跟上(它将打印“等待后”的次数,与用户在线程。睡眠处于活动状态时单击的次数相同)。那么我该如何预防呢?如有任何建议,我们将不胜感激。

public void mouseClicked(MouseEvent e) {
        print();
    }

public void print() {
    System.out.println("After waiting.");
    try {
        Thread.sleep(1500);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}

共有1个答案

章景同
2023-03-14
匿名用户

原因是线程。sleep()将阻止UI线程。因此,通过第一次单击,您将获得一个输出,并且您的应用程序将存储在睡眠期间再次单击的以下事件。然后,在GUI线程从睡眠状态返回后,会释放事件,并执行一些打印提示,直到其睡眠。因为

阻塞UI线程不是一件小事。如果要阻止用户输入,应禁用触发事件的按钮或节点,并在其处理完成后启用它。

 类似资料:
  • 问题内容: 我有一个交易,人员,交易日期,物品等数据库。每当一个人购买一件物品时,交易就存储在表格中,如下所示: 我想做的事情是找到从2012年1月1日(transactionDate)到2012年3月1日在14天内(可配置)或更短时间内多次购买相同ItemNumber的人(personNumber)。然后,我需要在报告中列出所有这些交易。 样本数据: 结果: 您将如何去做? 我已经尝试过这样做:

  • 问题内容: 在Linux中,我想运行一个程序,但只能运行有限的时间,例如1秒。如果程序超出此运行时间,我想终止进程并显示错误消息。 问题答案: StackOverflow不允许我删除答案,因为它已被接受。由于它在列表顶部,下面有一个更好的解决方案,因此它获得了否决票。如果您使用的是GNU系统,请按照@wRAR的建议使用代替。因此,希望您停止投票,这是它的工作方式: 您可以使用,,或为秒(如果省略默

  • 日安,我是tarantool的新手,我有一个关于tarantool内部客户端应用程序内存限制的问题,我有3亿个项目的内存数据库和选择其中一部分的lua应用程序,在选择我将结果包装为“类”后,从代码中进行更简单的交互。例如: 使用方法: 在大多数情况下,它在第一次运行时运行成功,但在第二次运行时,它以100%的概率失败,并显示消息(tarantool消息): 我知道,内存使用(非释放内存)存在问题,

  • 问题内容: 我在具有16GB Ram和64位OS的Linux机器上运行Python 2.7。我编写的python脚本可能会将过多的数据加载到内存中,这使计算机的运行速度降低到我什至无法杀死进程的地步。 虽然可以通过以下方式限制内存: 在运行脚本之前,请在外壳程序中添加一个限制选项。在我到处看的地方,该模块具有与相同的功能。但是调用: 在我的脚本开始时,绝对没有任何作用。即使将值设置为12000,也

  • 问题内容: 有些sql写得不好。有时,搜索需要花费数小时的申请时间。当一个应用程序(可能是一个网站)提交运行时间很长的查询时,我必须重新启动mysql。如何在数据库端限制sql查询的执行时间? 问题答案: 要在很长的执行时间后自动终止MySQL中的查询,请执行以下操作: 创建一个存储过程为: 然后在curosr的循环中执行以下操作: 创建,只是里面的上述步骤。 注意:KILL QUERY只是杀死查

  • 问题内容: 在python中,有没有一种方法可以在等待用户输入时计数时间,以便在30秒后自动跳过该函数? 问题答案: 推荐的解决方案所基于的函数仅适用于Unix。如果您需要跨平台或Windows特定的解决方案,则可以将其基于,使用从计时器线程将a发送到主线程。即: 无论30秒超时还是用户明确决定按Control-C放弃输入任何内容,这都将返回None,但是以相同的方式处理这两种情况似乎可以(如果需