zoukankan      html  css  js  c++  java
  • 6.1JavaStartThread

    6.1JavaStartThread

    工具类

    package iostudy.thread;

    import org.apache.commons.io.FileUtils;

    import java.io.File;
    import java.io.IOException;
    import java.net.MalformedURLException;
    import java.net.URL;

    /**
    * 多线程下载图片
    * @since JDK 1.8
    * @date 2021/6/1
    * @author Lucifer
    */
    public class WebDownload {

       /**
        * 下载方法,形参是资源路径和保存路径
        * @param url       下载资源的路径
        * @param name     保存的本地路径
        */
       public void download(String url, String name) {
           try {
               FileUtils.copyURLToFile(new URL(url), new File(name));
          }catch (MalformedURLException e){
               e.printStackTrace();
               System.out.println("非法url!!!");
          }catch (IOException e){
               e.printStackTrace();
               System.out.println("图片下载失败!!!");
          }
      }
       /*
       写好工具类webdownload以后让如线程体当中
        */
    }

     

    实现多线程下载图片

    package iostudy.thread;

    /**
    * 继承Thread类,重写run方法
    * @since JDK 1.8
    * @date 2021/6/1
    * @author Lucifer
    */
    public class TDownload extends Thread{

       /*为了方便使用,添加两个属性*/
       private String url; //远程下载图片资源路径
       private String name; //存储的本地路径

       /*将属性放入构造器当中,方便使用*/
       public TDownload(String url, String name){
           this.url = url;
           this.name = name;
      }

       @Override
       //实例化工具类,调用方法
       public void run(){
           //TODO Auto-generated method stub
           WebDownload wd = new WebDownload();
           wd.download(url, name);
           System.out.println(name);
      }

       public static void main(String[] args) {
           /*创建三个线程*/
           TDownload td1 = new TDownload("https://gimg2.baidu.com/image_search/src=http%3A%2F%2F1812.img.pp.sohu.com.cn%2Fimages%2Fblog%2F2009%2F11%2F18%2F18%2F8%2F125b6560a6ag214.jpg&refer=http%3A%2F%2F1812.img.pp.sohu.com.cn&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1625125787&t=c46d35d3ce29949cfbede0438e578618", "view.jpg");
           TDownload td2 = new TDownload("https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fa3.att.hudong.com%2F61%2F98%2F01300000248068123885985729957.jpg&refer=http%3A%2F%2Fa3.att.hudong.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1625125787&t=953b30464462811deaa41ee8cb23ea02", "success.jpg");
           TDownload td3 = new TDownload("", "");

           /*启动三个线程*/
           td1.start();
           td2.start();
           td3.start();
      }
    }

    借助代理类对象启动线程--->避免单继承的局限性,方便共享资源

    package iostudy.thread;

    /**
    * 创建线程:
    * 1、通过实现Runnable接口,重写run方法创建
    * 2、创建实现类对象 + 创建Thread类对象 + start方法启动
    * @since JDK 1.8
    * @date 2021/6/1
    * @author Lucifer
    */
    public class StartRunnable implements Runnable{

       /*重写Run方法*/
       //线程入口点
       @Override
       public void run(){
           for (int i = 0; i < 20; i++){
               System.out.println("coding!!!");
          }
      }

       //主线程
       public static void main(String[] args) {

           //创建实现类对象
           StartRunnable sr = new StartRunnable();
           //创建代理类对象
           Thread t = new Thread(sr);
           //启动代理类
           t.start();
           //三合一写法--->前提是每个对象只使用一次
           new Thread(new StartRunnable()).start();

           for (int i = 0; i < 20; i++){
               System.out.println("encoding!!!");
          }
      }
    }

     

    It's a lonely road!!!
  • 相关阅读:
    AX 利用windows粘贴板功能实现批量数据快速导出EXCEL
    在ax中怎么对enum类型循环取其中每一个值
    vba 快速定位当前EXCEL最后一栏
    在AX4.0中使用C#脚本的实现
    悟透javascript
    SIGAI机器学习第四集 基本概念
    SIGAI机器学习第十七集 线性模型1
    胸小肌的重要性
    SIGAI机器学习第十六集 支持向量机3
    英语听力
  • 原文地址:https://www.cnblogs.com/JunkingBoy/p/14838804.html
Copyright © 2011-2022 走看看