蓝桥杯里面的测试用例是啥

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了蓝桥杯里面的测试用例是啥相关的知识,希望对你有一定的参考价值。

参考技术A 蓝桥杯测试用例一般包括:输入样例、输出样例、输入输出范围、特殊情况测试等。

使Java方法不可中断的用例是啥

【中文标题】使Java方法不可中断的用例是啥【英文标题】:What are use cases of making Java method UnInterruptible使Java方法不可中断的用例是什么 【发布时间】:2021-07-24 18:45:45 【问题描述】:

我正在阅读 Google Guava RateLimiter。 acquire 方法将在等待新许可时将线程置于 uninterruptible uninterruptible 睡眠。中断异常

不间断睡眠并没有完全忽略 InterruptedException。但是只要抓住它,记住它已经被中断了,然后继续睡眠直到达到超时。它最终会很好地将中断标志设置回线程。

列表项

这可以防止调用者通过中断来取消等待。它可能有什么好处?是不是因为方法没有强制调用者处理InterruptedException? 还有哪些其他用例我们可能希望使用相同的不间断代码模式?

编辑: 我刚刚意识到我将它链接到了错误的方法。

public static boolean awaitUninterruptibly(Condition condition, long timeout, TimeUnit unit)

正确的方法是 sleepUninterruptibly。

public static void sleepUninterruptibly(long sleepFor, TimeUnit unit) 
    boolean interrupted = false;
    try 
      long remainingNanos = unit.toNanos(sleepFor);
      long end = System.nanoTime() + remainingNanos;
      while (true) 
        try 
          // TimeUnit.sleep() treats negative timeouts just like zero.
          NANOSECONDS.sleep(remainingNanos);
          return;
         catch (InterruptedException e) 
          interrupted = true;
          remainingNanos = end - System.nanoTime();
        
      
     finally 
      if (interrupted) 
        Thread.currentThread().interrupt();
      
    
  

【问题讨论】:

“只是因为该方法没有强制调用者处理 InterruptedException” - 调用者不会收到InterruptedException。他们可以通过isInterrupted 检查发生了什么,但他们不会得到那个异常。奇怪的是,这个方法返回一个布尔值,而同样的状态可以简单地用isInterrupted 方法检查。可能这只是一种强制执行,因此调用者必须考虑结果,就像 Optional 是方法的返回类型而不是 null 是的,我就是这么想的。我可以看到不传播InterruptedException 的唯一好处是调用者不需要考虑如何处理异常。但我不知道是否值得拒绝调用者通过中断等待来取消等待。 【参考方案1】:

是不是因为方法没有强制调用者处理InterruptedException

来电者不会收到InterruptedExceptionThread.currentThread().interrupt(); 只设置一个内部标志,它不会抛出 InterruptedException

可能存在(我不知道真实情况)在不被打断的情况下等待是有意义的情况。我确实知道由于“虚假中断”而可能发生的理论上的中断,即:没有真正原因的中断直接取决于您的代码,如 here 所记录的那样:

在等待条件时,通常允许发生“虚假唤醒”,作为对底层平台语义的让步。

【讨论】:

嗨,尤金,您的回复让我意识到我链接到了错误的代码。实际上是sleepUninterruptibly。我相信线程睡眠不会受到虚假唤醒的影响。 @Devguli this 倾向于不同意你的观点。 我可以看到您的链接仅提及wait 的情况(如等待/通知)。我相信它不适用于Thread.sleep() - ref

以上是关于蓝桥杯里面的测试用例是啥的主要内容,如果未能解决你的问题,请参考以下文章

ML KIT 中最小人脸尺寸的确切用例是啥?

数据仓库/ETL表中一列更新的测试用例可以是啥

测试用例是怎么写的?

职场大厂测试用例是怎么写的??

怎么的测试用例是一个好的测试用例?

好的测试用例是怎么写出来的?