当前位置:嗨网首页>书籍在线阅读

29-案例实现

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

案例实现

根据如下步骤实现本案例。

1.创建一个实现 Callable 接口且泛型为 String 的名为 Task 的类,并实现 call() 方法。在该方法中循环打印信息到控制台,并休眠100ms:

public class Task implements Callable<String> {
  @Override
  public String call() throws Exception {
    while (true){
      System.out.printf("Task: Test\n");
      Thread.sleep(100);
    }
  }

2.至此,我们可以开始实现应用程序的入口,创建包含 main() 方法的 Main 类:

public class Main {
  public static void main(String[] args) {

3.用 Executors 类中的 newCachedThreadPool() 方法创建一个 ThreadPool- Executor 实例对象:

ThreadPoolExecutor executor=(ThreadPoolExecutor)Executors
                                       .newCachedThreadPool();

4.创建一个新的 Task 实例对象:

Task task=new Task();

5.用 submit() 方法提交任务给执行器:

System.out.printf("Main: Executing the Task\n");
Future<String> result=executor.submit(task);

6.让主线程休眠2s:

try {
  TimeUnit.SECONDS.sleep(2);
} catch (InterruptedException e) {
  e.printStackTrace();
}

7.通过 submit() 方法返回一个名为 nameFuture 实例对象,在该对象中调用 cancel() 方法来取消执行当前任务,并向 cancel() 方法传入 true 值作为参数:

System.out.printf("Main: Canceling the Task\n");
result.cancel(true);

8.在控制台打印调用 isCancelled() 方法和 isDone() 方法的信息,来判断任务是否已取消或者执行完成:

System.out.printf("Main: Canceled: %s\n",result.isCancelled());
System.out.printf("Main: Done: %s\n",result.isDone());

9.调用 shutdown() 方法来终止执行器,并在控制台打印信息表明程序已经终止:

executor.shutdown();
System.out.printf("Main: The executor has finished\n");