Java多线程实现方法一:继承Thread类,重写run方法

1,046 阅读1分钟

Java实现多线程的方式有多种,本文利用多线程下载网络图片的小程序的方式简单介绍用继承Thread类,重写run的方法实现Java多线程。

1. 因为需要用到Apache Commons IO来下载保存图片,所以需在Maven项目的pom.xml文件中加入Apache Commons IO依赖。

<dependencies>
        <!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.6</version>
        </dependency>
</dependencies>

2. 创建一个ThreadLoader类并继承Thread类,并定义url,filename和构造函数。

public class ThreadDownloader extends Thread {
    private String url;
    private String filename;
    public ThreadDownloader(String url, String filename) {
        this.url = url;
        this.filename = filenam;
    }
}

3. 创建下载类,并编写下载方法。

public void download(String url, String filename) {
    try {
            FileUtils.copyURLToFile(new URL(url), new File(filename));
        } catch (IOException e) {
            System.out.println("IO异常!图片下载失败!");
            e.printStackTrace();
        }
}

4. 重写run方法。

@Override
    public void run() {
        Downloader dl = new Downloader();
        dl.download(url, filename);
        System.out.println("下载文件名为:" + filename);
    }

5. 编写main函数,使用start()方法启动进程。

public static void main(String[] args) {
    ThreadDownloader td1 = new ThreadDownloader("https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/gold-user-assets/2020/3/15/170ddd5352bb1d9e~tplv-t2oaga2asx-image.image", "1.jpg");
    ThreadDownloader td2 = new ThreadDownloader("https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/gold-user-assets/2020/3/15/170ddd480bc06073~tplv-t2oaga2asx-image.image", "2.jpg");
    ThreadDownloader td3 = new ThreadDownloader("https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/gold-user-assets/2020/3/15/170ddde9b2eaeb49~tplv-t2oaga2asx-image.image", "3.jpg");

    td1.start();
    td2.start();
    td3.start();
}

6. 运行程序可发现,图片正常下载但每次下载顺序均不相同。