<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      【多線程】線程創建方式三:實現callable接口

      線程創建方式三:實現callable接口

      代碼示例:

      import org.apache.commons.io.FileUtils;
      
      import java.io.File;
      import java.io.IOException;
      import java.net.URL;
      import java.util.concurrent.*;
      
      /**
       * @Description 線程創建方式三:實現callable接口
       * @Author hzx
       * @Date 2022-03-26
       */
      class TestCallable implements Callable<Boolean> {
      
          private String url; //網絡圖片地址
          private String name; //保存的文件名
      
          public TestCallable(String url, String name) {
              this.url = url;
              this.name = name;
          }
      
          /**
           * 下載圖片線程的執行體
           */
          @Override
          public Boolean call() {
              WebDownloader webDownloader = new WebDownloader();
              webDownloader.downloader(url, name);
              System.out.println("下載了文件:"+name);
              return true;
          }
      
          public static void main(String[] args) throws ExecutionException, InterruptedException {
              TestCallable t1 = new TestCallable(
                      "https://img2022.cnblogs.com/blog/1617979/202203/1617979-20220315222236055-1081286442.png","1.jpg");
              TestCallable t2 = new TestCallable(
                      "https://img2022.cnblogs.com/blog/1617979/202203/1617979-20220315222535845-769752621.png","2.jpg");
              TestCallable t3 = new TestCallable(
                      "https://img2022.cnblogs.com/blog/1617979/202203/1617979-20220315222316724-2013137843.png","3.jpg");
      
              //創建執行服務:
              ExecutorService ser = Executors.newFixedThreadPool(3);
      
              //提交執行
              Future<Boolean> r1 = ser.submit(t1);
              Future<Boolean> r2 = ser.submit(t2);
              Future<Boolean> r3 = ser.submit(t3);
      
              boolean rs1 = r1.get();
              boolean rs2 = r2.get();
              boolean rs3 = r3.get();
              //打印返回結果
              System.out.println("rs1返回值:"+rs1);
              System.out.println("rs2返回值:"+rs2);
              System.out.println("rs3返回值:"+rs3);
      
              //關閉服務
              ser.shutdown();
          }
      }
      
      //下載器
      class WebDownloader {
          /**
           * 下載方法
           */
          public void downloader(String url,String name) {
              try {
                  FileUtils.copyURLToFile(new URL(url), new File(name));
              } catch (IOException e) {
                  e.printStackTrace();
                  System.out.println("IO異常,下載方法出現問題");
              }
          }
      }
      

      輸出結果:

      下載了文件:1.jpg
      下載了文件:3.jpg
      下載了文件:2.jpg
      rs1返回值:true
      rs2返回值:true
      rs3返回值:true
      

      callable的好處

      • 1.可以定義返回值;
      • 2.可以拋出異常。
      posted @ 2022-03-26 16:54  HZX↑  閱讀(50)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 精品国产AV最大网站| 欧美牲交videossexeso欧美| 四虎在线播放亚洲成人| 国产精品天天看天天狠| 亚洲精品国产第一区二区| 欧美精品日韩精品一卡| 免费无码成人AV片在线| 国产精品高清一区二区三区| 亚洲av日韩av永久无码电影| 好男人日本社区www| 日本欧美一区二区免费视频| 99精品热在线在线观看视| 久久亚洲国产欧洲精品一| 秋霞在线观看秋| 葵青区| 国产精品污双胞胎在线观看| 亚洲成人四虎在线播放| 黑人巨茎大战欧美白妇| 亚洲精品综合一区二区在线| 激情综合五月丁香亚洲| 国产精品一区二区AV| 亚洲AV高清一区二区三区尤物| 亚洲高清国产拍精品熟女| 亚洲少妇人妻无码视频| 少妇被粗大的猛烈进出| 少妇人妻偷人精品免费| 国产亚洲精久久久久久久91| 久久精品不卡一区二区| 国产精品国产精品国产精品| 丰满熟女人妻一区二区三| av在线播放国产一区| 人妻精品动漫H无码中字| 色九九视频| 久久被窝亚洲精品爽爽爽| 夜夜躁日日躁狠狠久久av| 亚洲av无码乱码在线观看野外| 新绛县| 国产亚洲精品aaaa片app| 少妇人妻88久久中文字幕| 免费超爽大片黄| 日本午夜精品一区二区三区电影|