自己网站内容怎么才能被百度抓取重庆大渡口网站建设解决方案
自己网站内容怎么才能被百度抓取,重庆大渡口网站建设解决方案,做商城网站哪里买,手机模板网站模板下载网站1.什么是awaitility #xff1f;Awaitility 是一个用于 Java 的小型领域特定语言#xff08;DSL#xff09;#xff0c;主要用于简化和管理异步操作的同步问题。它的主要作用包括#xff1a;等待异步操作完成#xff1a;在测试异步代码时#xff0c;Awaitility 可以帮助…1.什么是awaitility Awaitility 是一个用于 Java 的小型领域特定语言DSL主要用于简化和管理异步操作的同步问题。它的主要作用包括等待异步操作完成在测试异步代码时Awaitility 可以帮助你等待某个条件变为真而不需要使用复杂的线程管理或轮询机制。提高测试的可读性通过使用流畅的 APIAwaitility 使得测试代码更易于阅读和理解。减少测试中的线程问题避免在测试中显式地使用Thread.sleep()从而减少不必要的等待时间和线程问题。灵活的超时和轮询间隔允许你设置自定义的超时时间和轮询间隔以便更好地控制等待条件的检查频率。总之Awaitility 使得在测试异步操作时更加简单和直观特别是在需要等待某个条件满足的情况下。2.代码工程实验目的一个使用 Awaitility 的简单示例演示如何等待异步操作完成。假设我们有一个异步任务该任务在后台线程中更新一个标志我们希望在测试中等待这个标志变为truepom.xml?xml version1.0 encodingUTF-8?project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdparentartifactIdJava-demo/artifactIdgroupIdcom.et/groupIdversion1.0-SNAPSHOT/version/parentmodelVersion4.0.0/modelVersionartifactIdAwaitility/artifactIdpropertiesmaven.compiler.source17/maven.compiler.sourcemaven.compiler.target17/maven.compiler.target/propertiesdependencies!-- Awaitility dependency --dependencygroupIdorg.awaitility/groupIdartifactIdawaitility/artifactIdversion4.2.0/version/dependency!-- JUnit dependency for testing --dependencygroupIdorg.junit.jupiter/groupIdartifactIdjunit-jupiter/artifactIdversion5.8.2/versionscopetest/scope/dependency/dependencies/projectAwaitilityExample异步任务startAsyncTask方法启动一个异步任务该任务在 5秒后将flag设置为true。Awaitility 使用在main方法中我们使用 Awaitility 的await()方法来等待flag变为true。我们设置了一个最大等待时间为 5 秒。条件检查until(example::isFlag)表示我们等待example.isFlag()返回true。ackage com.et;import org.awaitility.Awaitility;import java.util.concurrent.TimeUnit;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class AwaitilityExample {private volatile boolean flag false;public void startAsyncTask() {ExecutorService executor Executors.newSingleThreadExecutor();executor.submit(() - {try {// mock asyncThread.sleep(5000);flag true;} catch (InterruptedException e) {Thread.currentThread().interrupt();}});executor.shutdown();}public boolean isFlag() {return flag;}public static void main(String[] args) {AwaitilityExample example new AwaitilityExample();example.startAsyncTask();// use Awaitility to wait flag for trueAwaitility.await().atMost(5, TimeUnit.SECONDS).until(example::isFlag);System.out.println(Flag is now true!);}}以上只是一些关键代码所有代码请参见下面代码仓库代码仓库https://github.com/Harries/Java-demo(awaitility )3.测试代码3-1.默认等待时间await().until(Callable conditionEvaluator) 最多等待 10s 直到 conditionEvaluator 满足条件否则 ConditionTimeoutException。public void testAsynchronousNormal() {AwaitilityExample example new AwaitilityExample();example.startAsyncTask();try {// Default timeout is 10 seconds. If the condition is not met within this period, a ConditionTimeoutException is thrownAwaitility.await().until(new CallableBoolean() {Overridepublic Boolean call() throws Exception {return example.isFlag();}});} catch (Exception e) {Assertions.fail(Run exception: e.getMessage() , error: e.getStackTrace()[0].toString());}}3-2.最多等待await().atMost() 设置最多等待时间如果在这时间内条件还不满足将抛出 ConditionTimeoutException。Testpublic void testAsynchronousAtMost() {AwaitilityExample example new AwaitilityExample();example.startAsyncTask();try {// Specify a timeout of 3 seconds. If the condition is not met within this period, a ConditionTimeoutException is thrownAwaitility.await().atMost(3, SECONDS).until(new CallableBoolean() {Overridepublic Boolean call() throws Exception {return example.isFlag();}});} catch (Exception e) {Assertions.fail(Run exception: e.getMessage() , error: e.getStackTrace()[0].toString());}}3-3.至少等待await().atLeast() 设置至少等待时间多个条件时候用 and() 连接。Testpublic void testAsynchronousAtLeast() {AwaitilityExample example new AwaitilityExample();example.startAsyncTask();try {// Specify at least 1 second and at most 3 seconds. If the condition is not met within this period, a ConditionTimeoutException is thrownAwaitility.await().atLeast(1, SECONDS).and().atMost(3, SECONDS).until(new CallableBoolean() {Overridepublic Boolean call() throws Exception {return example.isFlag();}});} catch (Exception e) {Assertions.fail(Run exception: e.getMessage() , error: e.getStackTrace()[0].toString());}}3-4.轮询with().pollInterval(ONE_HUNDRED_MILLISECONDS).and().with().pollDelay(50, MILLISECONDS) that is conditions are checked after 50ms then 50ms100ms。Testpublic void testAsynchronousPoll() {AwaitilityExample example new AwaitilityExample();example.startAsyncTask();try {// Polling query, pollInterval specifies how often to poll, pollDelay specifies the delay between each pollAwaitility.with().pollInterval(ONE_HUNDRED_MILLISECONDS).and().with().pollDelay(50, MILLISECONDS).await(count is greater 3).until(new CallableBoolean() {Overridepublic Boolean call() throws Exception {return example.isFlag();}});} catch (Exception e) {Assertions.fail(Run exception: e.getMessage() , error: e.getStackTrace()[0].toString());}}3-5.Fibonacci 轮询with().pollInterval(fibonacci(SECONDS)) 非线性轮询按照 fibonacci 数轮询。Testpublic void testAsynchronousFibonacciPoll() {AwaitilityExample example new AwaitilityExample();example.startAsyncTask();try {// Use Fibonacci numbers as the interval: 1, 1, 2, 3, 5, 8,..., default unit is millisecondsAwaitility.with().pollInterval(fibonacci(SECONDS)).await(count is greater 3).until(new CallableBoolean() {Overridepublic Boolean call() throws Exception {return example.isFlag();}});} catch (Exception e) {Assertions.fail(Run exception: e.getMessage() , error: e.getStackTrace()[0].toString());}}4.引用https://github.com/awaitility/awaitilityhttps://www.liuhaihua.cn/archives/711844.html