java progressbar如何处理用户中断操作

   2024-09-30 3120
核心提示:在Java中,我们可以使用ProgressBar库来创建一个进度条。要处理用户中断操作,我们可以使用Thread和ExecutorService来实现。以下

在Java中,我们可以使用ProgressBar库来创建一个进度条。要处理用户中断操作,我们可以使用ThreadExecutorService来实现。以下是一个简单的示例:

首先,添加ProgressBar库依赖到你的项目。如果你使用Maven,可以在pom.xml文件中添加以下依赖:
   <groupId>me.tongfei</groupId>   <artifactId>progressbar</artifactId>   <version>0.9.2</version></dependency>
创建一个名为InterruptibleProgressBarDemo.java的类,并编写以下代码:
import me.tongfei.progressbar.*;import java.util.concurrent.*;public class InterruptibleProgressBarDemo {    public static void main(String[] args) {        int totalTasks = 100;        ExecutorService executor = Executors.newSingleThreadExecutor();        ProgressBar progressBar = new ProgressBarBuilder()                .setTaskName("Processing tasks")                .setInitialMax(totalTasks)                .build();        Future<?> taskFuture = executor.submit(() -> {            for (int i = 0; i< totalTasks; i++) {                // 模拟耗时任务                try {                    Thread.sleep(100);                } catch (InterruptedException e) {                    System.out.println("Task interrupted.");                    break;                }                progressBar.step();            }            progressBar.close();        });        try {            taskFuture.get(5, TimeUnit.SECONDS);        } catch (TimeoutException e) {            System.out.println("User interrupted the operation.");            taskFuture.cancel(true);            progressBar.close();        } catch (InterruptedException | ExecutionException e) {            e.printStackTrace();        } finally {            executor.shutdown();        }    }}

在这个示例中,我们创建了一个包含100个任务的进度条。我们使用ExecutorService来运行一个单线程任务,该任务将逐步更新进度条。我们使用Future.get()方法设置了一个超时时间(5秒),以便在用户中断操作时取消任务。

当用户中断操作时(例如,通过按下Ctrl+C),TimeoutException将被捕获,我们将取消任务并关闭进度条。

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式网站留言    |  赣ICP备2021007278号